摘要:覆盖必须满足以下条件子类方法的名称参数签名和返回类型必须与父类方法保持一致。子类方法不能缩小父类方法的访问权限。
方法签名
方法签名是指方法的参数类型,顺序和个数.不包含方法名称.
重载重载必须满足以下条件
方法名 相同
方法的参数类型,个数和顺序至少一项不同
方法的返回类型可以不同
方法的访问权限修饰符可以不同
覆盖如果在子类中定义的一个方法,其名称,返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么子类覆盖了父类的方法。
覆盖必须满足以下条件:
子类方法的名称、参数签名和返回类型必须与父类方法保持一致。
子类方法不能缩小父类方法的访问权限。
如果没有这个限制,会与java语言的多态机制发生冲突。
//创建父类型的变量,引用子类的实例 Parent parent = new Child(); //调用的是子类实例的方法,如果子类覆盖这个方法时,缩小了访问权限,可能会造成无法访问到子类实例的这个方法 parent.method();
子类方法不能抛出比父类方法更多的异常.子类方法抛出的异常必须与父类方法抛出的异常相同,或者父类方法抛出的异常类是父类方法抛出异常类的子类.
方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间.在同一个类中方法只能被重载,不能被覆盖.
父类的静态方法不能被子类覆盖为非静态方法.
父类的非静态方法不能被子类覆盖为静态方法
父类的私有方法不能被子类覆盖
父类的非抽象方法可以被子类覆盖为抽象方法
异同
相同点
方法名要保持一致
不同点
方法覆盖要求参数签名一致,而方法重载要求参数签名必须不一致.
覆盖要求返回类型一致,或者子类方法返回类型小于父类方法,重载对此不做限制.
覆盖只能用于子类覆盖父类的方法,重载用于同一个类的所有方法(包括从父类中继承而来的方法).
覆盖对方法的访问权限和抛出异常有要求,重载不做限制.
父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77423.html
摘要:抽象数据类型的多个不同表示可以共存于同一个程序中,作为实现接口的不同类。封装和信息隐藏信息隐藏将精心设计的模块与不好的模块区分开来的唯一最重要的因素是其隐藏内部数据和其他模块的其他实施细节的程度。 大纲 面向对象的标准基本概念:对象,类,属性,方法和接口OOP的独特功能 封装和信息隐藏 继承和重写 多态性,子类型和重载 静态与动态分派 Java中一些重要的Object方法设计好的类面向...
摘要:多态性面向对象三大特性封装继承多态。面向对象多态性存在的三个必要条件继承重写父类引用指向子类对象多态性的实现方式重写与重载静态多态性方法重载方法重载允许类具有多个相同名称的方法,但是方法参数列表不同。 多态性 面向对象(OOP)三大特性:封装、继承、多态。 多态性(polymorphism)指同一行为具有多种不同表现形式,在面向对象程序设计中表现为同一消息可以根据发送对象的类型不同,做...
摘要:前言面试中对于技术职位,一般分笔试与面谈,如果面试官的一些小问题你可以立马找到对应的知识点扩展开来,那么这就是你的优势,本系列将讲述一些面试中的事,不会很详细,但是应该比较全面吧。 前言 面试中对于技术职位,一般分笔试与面谈,如果面试官的一些小问题你可以立马找到对应的知识点扩展开来,那么这就是你的优势,本系列将讲述一些java面试中的事,不会很详细,但是应该比较全面吧。 主要内容 pa...
摘要:对象的引用关键字总是指向调用该方法的对象。根据出现位置的不同,作为对象的默认引用有两种情形。构造器中引用该构造器正在初始化的对象。如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。 类和对象 定义类 面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成...
阅读 2952·2023-04-25 20:43
阅读 1689·2021-09-30 09:54
阅读 1540·2021-09-24 09:47
阅读 2849·2021-09-06 15:02
阅读 3475·2021-02-22 17:09
阅读 1196·2019-08-30 15:53
阅读 1411·2019-08-29 17:04
阅读 1907·2019-08-28 18:22