java 子类的同名方法_java 父类子类有同名方法时如何调用的实现
父类引用默认调用子类重写的方法
如果父类的引用p指向了子类的实例,则通过这个引用p访问同名方法时,调用的是子类重写的方法。
父类引用p可以指向不同的子类,调用不同子类重写的不同的同名方法,进而达到类间多态的效果。
但是,父类的引用只能访问子类重写的方法,父类中没有的方法,父类的引用不能访问。也就是说,通过父类的引用来调用子类的方法时,不能访问到子类后来自己定义的方法。
子类引用默认调用自定义的方法
通过子类的引用访问同名方法时,默认是重写之后的同名方法。
子类通过super关键字来调用被隐藏的父类方法
如果还要访问父类的同名方法,可以使用super关键字来显示调用。
多态
多态存在的三个必要条件:要有继承、要有重写、父类变量引用子类对象。
重写原则:两同两小一大
两同:
方法名相同
形参列表要相同
两小
抛出的异常类型小于等于父类方法抛出的异常类型,也就是要么是原来的异常类型(相等),要么是原来异常类型的子类(更小)
返回值类型要小于等于比父类的返回值类型,也就是要么返回原来的返回值类型(相等),要么是原来的返回值类型的子类(更小)
一大
子类重写的方法的访问权限要大于等于父类方法的访问权限:
如果原来的访问类型为public,则重写的方法的访问权限只能是public。
在Java 8之前,Java接口的方法默认使用public abstract修饰,所以实现接口方法时,访问权限只能是public。
重载原则:两同一不同
两同
重载发生在同一个类中,
跟继承没有关系.
一不同
形参列表不同
如何判断是重载还是重写
看形参列表:
当方法名相同,形参也相同的时候,就是重写,此时还需要满足重写的其他条件,不然就会出现错误。
当方法名相同,但是形参列表不同的时候,就是重载
覆盖和重载的区别
对形参列表的要求不同
重写要求形参列表要相同,
而重载要求形参列表不相同
对抛出的异常的要求不同
重写要求抛出的异常更小或相等
重载对抛出的异常没有要求
对返回值类型的要求不同
重写要求返回值类型更小或相等
重载对返回值类型没有要求
对访问权限的要求不同
重写要求访问权限要更大或相等,
而重载对访问权限没有要求
发生的范围不同
重写发生子类继承父类的时候
重载发生在同一个类中,和继承没有关系.
重载和重写的相同点
方法名要相同
补充知识:java中子类继承父类和实现接口有同名方法怎么处理
Java是一门单继承语言,但是,在子类的继承关系中,会存在父类和接口有同名方法的情况,这种情况该怎么处理呢?
我们来一步步验证:
1.子类继承父类,实现接口,父类和接口有同名方法
以上这篇java 父类子类有同名方法时如何调用的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。
public interface MyInterface {
void test();
}
public class Father {
public void test() {
System.out.println("父类方法");
}
}
public class Son extends Father implements MyInterface{}
子类直接继承父类和实现接口不实现接口方法不报错,说明这种情况下默认父类实现该方法
2.我们将父类中方法注释掉,看看结果
public interface MyInterface {
void test();
}
public class Father {
// public void test() {
// System.out.println("父类方法");
// }
}
很明显,子类在继承过程中出现了错误提示,需要实现接口中的方法
3.将父类中方法取消注释,子类实现该方法,代码如下:
public interface MyInterface {
void test();
}
public class Father {
public void test() {
System.out.println("父类方法");
}
}
可以看到,子类方法提示是重写的父类方法。
至此,验证完毕!
以上这篇java 父类子类有同名方法时如何调用的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。
java 子类的同名方法_java 父类子类有同名方法时如何调用的实现相关推荐
- Java 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
Java 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+-+1/n,当输入n为奇数时,调用函数1/1+1/3+-+1/n public class Test {public void ...
- java继承怎么老是出错_java中子类继承父类时总是出错怎么回?
权限public > 包(package,默认,也就是什么权限修饰符都不加) > proteced > private 子类继承了父类的所有成员(这样说实际是不对的),但只能访问父类 ...
- java super()方法_Java super关键字的使用方法详解
构造方法中的super关键字 在Java子类的构造方法中可以通过super关键字来调用父类的构造方法.其用法为: 1) super(); 访问父类中的无参构造函数 2) super (paras-); ...
- java clone方法_java安全编码指南之:方法编写指南
简介 java程序的逻辑是由一个个的方法组成的,而在编写方法的过程中,我们也需要遵守一定的安全规则,比如方法的参数进行校验,不要在assert中添加业务逻辑,不要使用废弃或者过期的方法,做安全检查的方 ...
- java 不同包子类 覆盖_Java中不同方法的覆盖方法
经过测试 覆盖的好处是能够定义特定于子类类型的行为,这意味着子类可以根据其要求实现父类方法. 用面向对象的术语来说,覆盖是指覆盖现有方法的功能. 示例class Animal { public voi ...
- java 反射 field get方法_JAVA学习之反射getDeclaredField()方法与getField()方法的区别
在使用反射的时候,常用到的几个方法老是傻傻的分不清楚是干吗的,功能差不多的啊, 比如: Class.getFields(), Class.getField(String), Class.getDecl ...
- java this关键字的使用_Java this 关键字的使用方法详解
Java this 关键字的使用方法详解 构造方法中的this关键字 构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用.但如果一个 ...
- java中clone方法_Java Object clone()方法– Java中的克隆
java中clone方法 Cloning is the process of creating a copy of an Object. Java Object class comes with na ...
- java读取mysql数据库配置文件_java读取properties文件的方法
Java 读写Properties配置文件 Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实 ...
最新文章
- 寄售业务的SAP标准流程
- Netbeans8下 Weblogic EJB案例
- CBOW模型的学习、Trainer类的实现
- kernel: TCP: time wait bucket table overflow
- VScode配置go空格缩进替代tab
- 挑战程序设计竞赛 — 知识总结
- WIFI安全测试之WPS(PIN)加密暴力破解
- 今日分享idea精彩好看的主题+网站地址
- 计算机网络奇偶校验码题目,计算机网络试题(考试必备)分解.doc
- 武汉大学:最美大学最美网络
- matlab中marker太密,Matlab画图时Marker过多的解决方法.pdf
- Latex表格标题左对齐,并且table加粗
- centos 7 使用certbot解决域名证书续签最佳实践
- MobaXterm全能终端神器(下载安装使用教程)
- 备案提示 尊敬的ICP用户: 您的短信核验失败,请您重新验证
- 事件驱动架构(EDA/SEDA/DEDA/ESB/CQRS/EventSourcing)
- WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
- 10大全球设计师SNS社区网站
- 26个新鲜有魅力的自适应网站设计实例
- 消防工程用黄铜洒水喷头浇注系统设计优化分享
热门文章
- WordPress 4.8.2 升级维护版本发布
- centos 6.5/redhat 6.5 网卡配置有问题
- 程序员面试题100题第28题——全排列
- 黑客借“甲型流感”传毒 挂马疾病预防控制中心网站
- 30款非常酷的创意名片设计欣赏
- 今天工作中碰到一个clone的问题
- 内网服务器时间修改,内网(无网络)搭建ntp时间同步服务
- 图解排序算法(三)之堆排序
- 信息学奥赛一本通(1054:三角形判断)
- How Many Pieces of Land ? (UVA-10213)