关于父类和子类方法发生重载的问题

木易 9319 0 1

 

在一本书上看到过子类可以重载父类的方法,关于这一点有点疑惑,个人重载是发生在同一个类中。网上关于这个也存在争议。先暂时作为一个问题记录在此

 

下面这张图片引用自《疯狂java讲义第三版》

 

关于重写,遵循以下的规则:

(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。

(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个protected的方法)。

(3)只有实例方法才能被重写,超类中的final方法不能被重写。

(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。

(5)注意一种特殊情况:如果超类的方法版本中声明了检查异常,但重写的子类方法中没有声明,这时如果使用多态的方式进行调用,那么编译器认为你调用的是声明了异常的方法。

(6)尽管多态是在编译时确定对象的类型,但在编译时,还是根据父类的方法声明进行程序检查。因此,如果子类中定义的方法,在父类中没有定义,则会出项编译错误。

Java的重载机制:

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。 [1]  Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。


评论区
请写下您的评论...
暂无评论...
猜你喜欢
java基础 3595 asm动态getandset1.自定义器packageclub.jiajia.test;publicclassMyClassLoaderextendsClassLoader
数据结构与算法 12322 描述给定一个int型一维数组a[],一个int数值b。编写一个程序,判断数组中有没有两个数(a[i],a[j])b,如果存在,返回两个数在a数组中下表
linux 835 /sda11014M141M874M14%/boottmpfs100M0100M0%/run/user/0三、添加磁盘,演示分区添加一个硬盘sdb,演示分区在虚拟机设置中点击添加,选择硬盘启,查看添加
java基础 4533 静态不能new内部实例对象解析:我们知道非静态内部有一个特点就是可以访外部对象非静态属性,而外部属性只有再创建对象以后才有,而静态,不属对象,所以再main执行
java虚拟机(jvm) 5103 常是按需加,即第一次使用该时才加。由有了器,Java运行时系统不需要知道文件与文件系统。学习器时,掌握Java委派概念很要。1.过程:2.命周期:加:"加"是"
java虚拟机(jvm) 5693 1.内部名在许多情况下,一种型只能是或接口型。例如,一个、由一个实现接口,或者由一个抛出异常就不能是基元型或数组型,必须是或接口型。这些型在已编译中用内部名字表示
java虚拟机(jvm) 5080 模块称为“器”。器可以说是Java语言一项创新,也是Java语言流行要原因之一,它最初是为了满足JavaApPlet需求而开出来。虽然目前JavaApplet技术基本上已经“死掉
java虚拟机(jvm) 3542 (InitializationUsing)(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接(Linking),这7个阶段顺序如图所示。加、验证、准备、初始化这5
归档
2018-12  5 2019-01  2 2019-04  1 2019-05  2 2019-06  1 2019-11  1 2019-12  3
标签
博客 java linux springboot 笔记 问题 cloud
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。