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日

相关文章

  • Java中的try-catch语句如何使用?

    当Java程序运行时发生异常,程序将会自动停止运行并抛出异常信息。为了避免程序因为异常而终止,可以使用Java中的try-catch语句来捕获异常并处理。 一、语法格式 try-catch语句的语法格式如下: try { // 可能会抛出异常的代码块 } catch (ExceptionType e) { // 捕获并处理异常的代码块 } try:被检测的代…

    Java 2023年4月27日
    00
  • Java Web项目中连接Access数据库的配置方法

    下面我将为你详细讲解Java Web项目中连接Access数据库的配置方法。首先我们需要了解几个基本概念。 一、基本概念 在开始配置连接Access数据库之前,我们需要了解以下几个基本概念: ODBC:ODBC(Open Database Connectivity)是Microsoft提供的开放式数据库连接接口,它可以使不同的应用程序连接到不同的数据库。 J…

    Java 2023年5月20日
    00
  • Java的基础语法学习笔记

    下面我将为大家详细介绍关于“Java的基础语法学习笔记”的完整攻略。 一、学习前准备 在学习Java基础语法之前,我们需要先掌握一些基本知识,包括: 编程基础:了解计算机的基础知识、掌握基本的编程逻辑和算法知识。 面向对象编程思想:掌握面向对象编程思想,包括封装、继承、多态等概念。 Java基础环境:安装配置好Java的基础环境,包括Java SE Deve…

    Java 2023年5月30日
    00
  • 黑客如何利用文件包含漏洞进行网站入侵

    黑客通过利用文件包含漏洞,可以轻松地将自己的代码注入到网站服务器中,从而实现对网站的入侵。下面是黑客会使用的一些攻击方法和技术: 使用文件包含漏洞的攻击方法 抓取页面源代码 黑客可以访问页面的URL,并使用一些指定的参数来获取页面的源代码。一旦黑客获取了页面的源代码,就可以查看其中是否存在文件包含漏洞。 判断漏洞类型 黑客可以通过分析页面源代码,判断该漏洞是…

    Java 2023年6月15日
    00
  • 什么是类加载的双亲委派模型?

    关于类加载的双亲委派模型,我们可以这样来详细讲解: 一、什么是类加载的双亲委派模型? 类加载器在加载类的过程中,会先将请求交给父类加载器去完成类加载。如果父类加载器无法完成类加载,才由自己来实现类的加载。这种按照一定顺序依次向上委托的模型,就是类加载的双亲委派模型。 在这个模型中,类加载器之间是存在父子关系的。一个类加载器在加载某个类的时候,如果它的父类加载…

    Java 2023年5月10日
    00
  • Spring Boot 2.x基础教程之配置元数据的应用

    让我来详细介绍一下“Spring Boot 2.x基础教程之配置元数据的应用”的完整攻略。 什么是配置元数据 首先,我们需要了解一下什么是配置元数据。在Spring Boot中,配置元数据用于描述Spring应用程序的结构和配置。这些元数据包括应用程序的配置信息,例如应用程序的名称、端口号、日志文件路径等。通常,可以使用application.propert…

    Java 2023年5月19日
    00
  • 详解Java函数式编程和lambda表达式

    详解Java函数式编程和lambda表达式 什么是函数式编程 函数式编程是一种编程范式,它主要关注于描述问题是什么,而不是如何解决问题。在函数式编程中,函数是一等公民,可以像其他对象一样传递和操作。函数式编程强调表达式求值,而不是计算机执行指令。 为什么使用函数式编程 函数式编程能够简化代码逻辑,减少依赖关系,增加可重用性。使用函数式编程可以更好地利用多核处…

    Java 2023年5月26日
    00
  • 详解Windows下调整Tomcat启动参数的实现方法

    详解Windows下调整Tomcat启动参数的实现方法步骤如下: 一、了解Tomcat启动参数 Tomcat启动参数是在启动Tomcat时传递给JVM的参数。例如,-Xmx512m是告诉JVM将内存限制为512MB。 二、在Windows下调整Tomcat启动参数 在Windows下调整Tomcat启动参数的方法有以下几个步骤: 1. 打开cmd命令行窗口 …

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