Java基础之重载(Overload)与重写(Override)详解

Java基础之重载(Overload)与重写(Override)详解

什么是重载(Overload)?

重载指的是在同一个类中,可以使用相同的方法名,但是方法名后面的参数列表必须不同。也就是说,同一个方法名可以对应多个不同的方法,这些不同的方法在参数列表的类型、数量或者顺序上都有所区别。

重载方法的形式:

    // 仅仅参数类型不同
    public void doSomething(int num) { ... }
    public void doSomething(double num) { ... }

    // 参数的数量不同
    public void doSomething(int num) { ... }
    public void doSomething(int num, String name) { ... }

   // 参数的顺序不同
   public void doSomething(int num, String name) { ... }
   public void doSomething(String name, int num) { ... }

重载规则

Java中对于重载方法的要求如下:

  • 同一类中方法名相同但参数列表不同。
  • 不能仅仅依靠返回值的不同来重载方法。
  • 只有参数列表不同时,才能够进行重载。
  • 如果参数个数相同,则参数类型可以不同,前提是它们不构成歧义(即只有一个方法以上符合调用时传入的参数类型和个数)。
  • 如果两个或两个以上的方法符合前三个条件,则采用参数数量最多的那个方法。

什么是重写(Override)?

重写指的是在子类中编写一个与其父类中方法名,返回类型、参数列表都相同的方法。子类重写(覆盖)继承自父类的方法时,必须与父类一模一样,包括方法名、返回值类型、方法参数、访问修饰符等。当子类对象调用该方法时,将优先调用子类中定义的方法,而不是父类中同名同参同返回值类型的方法。

重写方法的形式:

// 子类中重写了父类的方法
public class ChildClass extends ParentClass {
    public void doSomething() { ... }
}

重写规则

Java中对于方法重写的要求如下:

  • 方法名必须与被重写方法的方法名完全相同。
  • 方法的返回类型与参数列表必须与被重写方法的返回类型和参数列表完全相同。
  • 访问修饰符的限制不能比被重写方法的限制更严格(即 public > protected > default > private)。
  • 重写的方法不能比被重写的方法抛出更广泛的异常。
  • 重写的方法不能是final或static类型。

举例说明

重载方法的举例

public class OverloadDemo {
    public void doSomething(int num) {
        System.out.println("重载方法1:" + num);
    }

    public void doSomething(double num) {
        System.out.println("重载方法2:" + num);
    }

    public void doSomething(int num, String name) {
        System.out.println("重载方法3:" + num + " " + name);
    }

    public void doSomething(String name, int num) {
        System.out.println("重载方法4:" + name + " " + num);
    }

    public static void main(String[] args) {
        OverloadDemo demo = new OverloadDemo();
        demo.doSomething(1);
        demo.doSomething(1.0);
        demo.doSomething(1, "hello");
        demo.doSomething("hello", 1);
    }
}

运行结果:

重载方法1:1
重载方法2:1.0
重载方法3:1 hello
重载方法4:hello 1

重写方法的举例

public class ParentClass {
    public void doSomething() {
        System.out.println("父类中的方法");
    }
}

public class ChildClass extends ParentClass {
    public void doSomething() {
        System.out.println("子类中的方法");
    }

    public static void main(String[] args) {
        ParentClass p = new ChildClass();
        p.doSomething();
    }
}

运行结果:

子类中的方法

在上面的例子中,尽管把子类对象存储在父类引用变量中,最终执行的却是子类中重写的方法。这就是Java中的方法重写机制。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基础之重载(Overload)与重写(Override)详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • tomcat6_apache2.2_ajp 负载均衡加集群实战分享

    Tomcat6、Apache2.2、AJP 负载均衡加集群实战分享 一、引言 本文将介绍如何使用Tomcat6、Apache2.2和AJP实现负载均衡加集群,并提供了两个示例进行演示。本文假设读者已经熟悉Linux基础知识,并且已经安装了Tomcat6和Apache2.2。 二、负载均衡加集群 2.1 集群模式 为了实现负载均衡加集群,我们需要将多个Tomc…

    Java 2023年5月19日
    00
  • Linux下Varnish缓存服务器的安装与配置教程

    安装Varnish缓存服务器的步骤如下: 1. 更新apt包管理器 使用以下命令更新apt包管理器: sudo apt update 2. 安装Varnish 使用以下命令从Ubuntu存储库中安装Varnish: sudo apt install varnish 3. 配置Varnish服务器 3.1 修改Varnish默认配置 使用以下命令来编辑默认的V…

    Java 2023年6月15日
    00
  • 基于Mybatis的配置文件入门必看篇

    下面我将详细讲解“基于Mybatis的配置文件入门必看篇”的完整攻略。 前言 MyBatis是一款优秀的持久层框架,它对JDBC做了很好的封装,使得开发者可以只关注SQL本身,而不需要花费精力去处理JDBC带来的诸多问题。MyBatis通过SqlSession对象直接与数据库进行交互。而SqlSessionFactoryBuilder和SqlSessionF…

    Java 2023年5月20日
    00
  • 浅析Spring的事务实现原理

    浅析Spring的事务实现原理 前言 在开发Java应用程序中,事务管理是一个非常常见而且非常重要的话题。Spring作为一个开源的企业级应用程序开发框架,其事务管理功能是非常强大的。在本文中,我们将深入浅出的分析Spring的事务实现原理。 Spring事务管理架构 Spring的事务管理是建立在抽象层之上的。其包含了4个不同的类:PlatformTran…

    Java 2023年5月20日
    00
  • Spring Boot 集成接口管理工具 Knife4j

    Spring Boot集成接口管理工具Knife4j的完整攻略 Knife4j是一款基于Swagger的接口管理工具,可以帮助我们快速生成API文档,并提供在线调试和测试功能。在Spring Boot中,我们可以很方便地集成Knife4j,并实现接口管理和调试。本文将详细讲解Spring Boot集成Knife4j的完整攻略,并提供两个示例。 1. 集成Kn…

    Java 2023年5月15日
    00
  • Json字符串与Object、List、Map的互转工具类

    介绍:在Java中,经常会使用Json格式的字符串来传输数据,但是在Java程序内部我们又需要把Json字符串转换为Java对象来方便的操作数据。本文将介绍如何使用Json相关的工具类将Json字符串转换为Java对象,并将Java对象转换为Json格式的字符串。 将Json字符串转换为Java对象 当我们有一个Json格式的字符串需要转换为Java对象时,…

    Java 2023年5月26日
    00
  • Spring 中jdbcTemplate 实现执行多条sql语句示例

    Spring中jdbcTemplate实现执行多条sql语句示例 jdbcTemplate提供了批量操作的方法batchUpdate,可以一起执行多条sql语句。下面是一段示例代码: @Autowired private JdbcTemplate jdbcTemplate; … public void batchUpdate(List<String…

    Java 2023年6月16日
    00
  • JSP导出Excel文件的方法

    JSP导出Excel文件是一种常见的需求,在这里给出一个JSP导出Excel文件的完整攻略。 1. 准备工作 首先需要引入先关依赖。 jxl.jar (可从网络上下载):jxl是一款专门用于处理Excel文件的java类库,其中包含了读取和写入Excel文件等相关操作。 2. 导出Excel文件的主要过程 (1)定义数据集并填充数据 首先,我们需要定义一个要…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部