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

yizhihongxing

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日

相关文章

  • java(jsp)整合discuz同步登录功能详解

    下面是详细讲解“java(jsp)整合discuz同步登录功能详解”的攻略。 介绍 Discuz是一个比较古老的论坛系统,它有很多的功能以及插件,而且也有很多网站在使用它。如果你已经有了一个成熟的Java Web网站,那么也许你希望这个网站能够跟Discuz集成起来,实现同步登录的功能。这篇攻略将介绍如何实现Java Web和Discuz之间的同步登录功能。…

    Java 2023年6月15日
    00
  • 浅谈Java程序运行机制及错误分析

    浅谈Java程序运行机制及错误分析 Java程序的基本运行机制 Java程序的运行过程主要包含编译和执行两个阶段。 编译阶段 将.java文件通过编译器编译生成同名的.class文件。 在编译过程中,编译器会检查代码的语法、类型等问题,如果存在问题会报错并停止编译。 如果编译成功,会生成一个.class文件,它包含了字节码指令以及相关的元数据信息。 示例1:…

    Java 2023年5月26日
    00
  • 一文详解Java闭锁和栅栏的实现

    一文详解Java闭锁和栅栏的实现 1. 什么是闭锁和栅栏 在并发编程中,有时需要等待某个操作的完成,或者协调多个线程的执行。Java提供了闭锁(Latch)和栅栏(Barrier)两个机制来实现这种协调。 闭锁是一种同步工具,可以使线程等待一个或多个线程的操作完成。闭锁一般会在某个线程等待另一个线程完成任务时使用。 栅栏是一种同步工具,它允许一组线程在某个点…

    Java 2023年5月26日
    00
  • 详解eclipse中Maven工程使用Tomcat7以上插件的方法

    首先,在Eclipse中导入Maven工程后,我们需要对项目进行如下配置: 打开pom.xml文件,添加如下依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <…

    Java 2023年5月19日
    00
  • Java Swing组件文件选择器JFileChooser简单用法示例

    下面我就详细为您讲解“Java Swing组件文件选择器JFileChooser简单用法示例”的完整攻略。 什么是JFileChooser? JFileChooser是Java Swing组件库中的一个组件,它提供了一个通用的、可自定义的对话框,用于允许用户选择文件或目录。用户可以通过对话框打开或者保存文件或目录,并进行其他一些相关操作。 如何使用JFile…

    Java 2023年5月20日
    00
  • Java实现读写文件功能的代码分享

    下面是Java实现读写文件功能的完整攻略。 读文件 读文件是指从磁盘上读取文件内容到内存中。Java实现读文件可以使用InputStream、InputStreamReader、BufferedReader等类。 InputStream InputStream是Java的基本输入流,用于从源(如文件)读取字节的流。可以使用 FileInputStream 类…

    Java 2023年5月19日
    00
  • tomcat漏洞汇总

    Tomcat漏洞汇总 简介 Tomcat是Apache Foundation下的一个开源的Web服务器,在Web应用的开发中使用非常普遍。然而,Tomcat在使用过程中会存在各种漏洞,这些漏洞可能会导致服务器遭到攻击。 该文章旨在汇总Tomcat中的一些漏洞,并提供相关的解决方案和示例。 漏洞及解决方案 未授权访问 攻击者可以通过未授权访问进入Tomcat的…

    Java 2023年6月2日
    00
  • Spring Boot整合阿里开源中间件Canal实现数据增量同步

    Spring Boot整合阿里开源中间件Canal实现数据增量同步攻略 简介 Canal是阿里巴巴开源的一款数据库binlog日志解析工具,用于数据增量同步和数据订阅。本文将介绍如何将Canal与Spring Boot整合,实现数据库的增量同步。 环境准备 JDK 8+ Spring Boot Canal 操作步骤 步骤一:引入依赖 在Spring Boot…

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