Java教程-重载和重写的区别

1、重写(Override)

从字面上看,重写就是 重新写一遍的意思。

其实就是在子类中把父类本身有的方法重新写一遍。

子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。

但要注意子类函数的访问修饰权限不能小于父类的。

重写 总结:

2、发生在父类与子类之间

1-方法名、参数列表、返回值类型(子类方法中的返回值类型可以是父类方法中返回值类型的子类)必须相同

2-子类方法的权限修饰符的限制一定要大于或等于被重写方法的权限修饰符(public>protected>default>private)

3-重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

4-父类中私有方法不能被重写

3、重载(Overload)

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

重载 总结:
2-1.重载是一个类中多态性的一种表现
2-2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
2-3.重载的时候,返回值类型可以相同也可以不相同无法以返回型别作为重载函数的区分标准

4、区别

重载发生在一个类中,同名的方法如果有不同的参数列表则视为重载;

重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。

重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

(0)

相关推荐

  • java的重载与重写

    原文链接http://zhhll.icu/2020/11/11/java%E5%9F%BA%E7%A1%80/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/%E9%87%8 ...

  • 方法覆盖和方法重载必须满足的条件

    方法覆盖必须满足下列条件(1) 子类的方法的名称及参数必须和所覆盖的方法相同(2) 子类的方法返回类型必须和所覆盖的方法相同(3) 子类方法不能缩小所覆盖方法的访问权限(4) 子类方法不能抛出比所覆盖 ...

  • Java面向对象中:方法重载和方法重写以及区别、 this关键字和super关键字以及区别

    2020-04-13 Java面向对象中:方法重载和方法重写 .  this关键字和super关键字 方法重载:是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数 ...

  • Java定义

    多态的定义: 多态分为编译时多态和运行时多态. 编译时多态:方法的重载 运行时多态:定义的对象引用所指向的具体类型在运行期间才能确定 运行时多态的三个条件:继承.重写.向上转型 运行时多态就是子类继承 ...

  • JavaSE 基础大纲

    Java基础(JavaSE) 1.Java 基础语法: 1.1 注释 行内注释 // 多行注释 /**/ 文档注释 /** */ - javadoc 生成帮助文档 1.2 标识符 关键字 1.3 数据 ...

  • Java中的多态详解

    一.多态的概念 多态分为类的多态和方法的多态,类的多态就是一个类型可以有不同的表现形态,什么样的类型才会具备多态呢?只有被多个子类继承或者实现的父类才具备多态的特征,因为在运行期间可以根据具体的子类表 ...

  • Java基础

    Java基础 ☕java ['dʒɑvə] 基础 数据类型 类型自动提升与强制转型 在运算过程中,如果参与运算的两个数类型不一致,那么计算结果为较大类型的整型.例如,short和int计算,结果总是i ...

  • c++继承关系中成员函数的重载、重写、重定义之间的区别

    c++继承关系中成员函数的重载、重写、重定义之间的区别

  • Java教程-int和Integer有什么区别

    int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...

  • 中级Java教程面试题

    对java面试而言,面试前的准备一定要有面试题收集和学习这一项,因为在招聘公司看来,对java工程师职位的最大关注就是专业知识和技能水平的考察,所以程序员去公司面试,无论怎样都要先做一套面试题.对于不 ...

  • Python和Java哪个更简单?四大区别!

    Python和Java都是当下比较流行的编程语言,各自在各自的领域都拥有不错的表现,当然很多人转行学习编程语言,都会十分纠结选择Python还是Java,你知道选择哪个吗?接下来我们详细对比一下. 1 ...

  • 最新Java教程:在Java中使用便携式ONNX AI模型

    在我们关于2020年使用便携式神经网络的系列文章中,您将了解如何在x64架构上安装ONNX并在Java中使用它. 微软与Facebook和AWS共同开发了ONNX.ONNX格式和ONNXRuntime ...

  • 2021最新整理Java教程:Java 智能卡迷你计算器

    介绍 本文是关于编写基于Java智能卡的应用程序.本教程将帮助初学者理解Java智能卡和主机应用程序之间的概念和通信.我已经看到Java智能卡技术的初学者提出了一些简单的问题,所以我决定为他们提供一个 ...

  • Java接口和抽象类的本质区别

    Java接口和抽象类的本质区别