关于父类和子类方法发生重载的问题
在一本书上看到过子类可以重载父类的方法,关于这一点有点疑惑,个人重载是发生在同一个类中。网上关于这个也存在争议。先暂时作为一个问题记录在此
下面这张图片引用自《疯狂java讲义第三版》
关于重写,遵循以下的规则:
(1)重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。
(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个protected的方法)。
(3)只有实例方法才能被重写,超类中的final方法不能被重写。
(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。
(5)注意一种特殊情况:如果超类的方法版本中声明了检查异常,但重写的子类方法中没有声明,这时如果使用多态的方式进行调用,那么编译器认为你调用的是声明了异常的方法。
(6)尽管多态是在编译时确定对象的类型,但在编译时,还是根据父类的方法声明进行程序检查。因此,如果子类中定义的方法,在父类中没有定义,则会出项编译错误。
Java的重载机制:
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。 [1] Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。
评论区
请写下您的评论...
猜你喜欢
java基础
3929
asm动态生成类和getandset方法1.自定义类加载器packageclub.jiajia.test;publicclassMyClassLoaderextendsClassLoader
blog
算法-求和问题
数据结构与算法
12607
问题描述给定一个int类型一维数组a[],和一个int类型的数值b。编写一个程序,判断数组中有没有两个数(a[i],a[j])的和等于b,如果存在,返回两个数在a数组中的下表
blog
linux系统关于磁盘的分区和挂载
linux
1042
/sda11014M141M874M14%/boottmpfs100M0100M0%/run/user/0三、添加磁盘,演示分区和挂载添加一个硬盘sdb,演示分区和挂载在虚拟机设置中点击添加,选择硬盘重启,查看添加的硬
java基础
4848
静态方法不能new内部类的实例对象解析:我们知道非静态内部类有一个特点就是可以访问外部类对象的非静态属性,而外部类的的属性只有再创建对象以后才有,而静态方法属于类,不属于对象,所以再main方法执行
blog
java类加载器理解
java虚拟机(jvm)
5344
常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。学习类加载器时,掌握Java的委派概念很重要。1.类的加载过程:2.类的生命周期:加载:"加载"是"
blog
asm类型描述符和方法描述符
java虚拟机(jvm)
5962
1.内部名在许多情况下,一种类型只能是类或接口类型。例如,一个类的超类、由一个类实现的接口,或者由一个方法抛出的异常就不能是基元类型或数组类型,必须是类或接口类型。这些类型在已编译类中用内部名字表示
blog
jvm内存模型分析-类和类加载器
java虚拟机(jvm)
5710
模块称为“类加载器”。类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足JavaApPlet的需求而开发出来的。虽然目前JavaApplet技术基本上已经“死掉
java虚拟机(jvm)
3795
(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
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。