Java继承多态经典案例分享
今天动力节点java培训机构小编为大家分享Java继承多态经典案例,希望通过此文能够帮助到大家,下面就随小编一起看看Java继承多态经典案例。
public class A {
public String show(D obj) {
return ("A and D");
}
public String show(A obj) {
return ("A and A");
}
}
public class B extends A {
public String show(B obj) {
return ("B and B");
}
public String show(A obj) {
return ("B and A");
}
}
public class C extends B{
}
public class D extends B{
}
public class Demo2 {
public static void main(String[] args) {
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.show(b)); // A and A
System.out.println(a1.show(c)); // A and A
System.out.println(a1.show(d)); // A and D
System.out.println(a2.show(b)); // B and A
System.out.println(a2.show(c)); // B and A
System.out.println(a2.show(d)); // A and D
System.out.println(b.show(b)); // B and B
System.out.println(b.show(c)); // B and B
System.out.println(b.show(d)); // A and D
}
}
分析:
多态的两种形式:1、父类做形参,子类做实参。2、父类的引用指向子类的实例对象。
首先分析一个各个类所具有的方法。
A:public String show(D obj); public String show(A obj);
B:public String show(D obj); public String show(A obj); public String show(B obj); public String show(A obj);-(被重写)
C:public String show(D obj); public String show(A obj); public String show(B obj); public String show(A obj);-(被重写)
D:public String show(D obj); public String show(A obj); public String show(B obj); public String show(A obj);-(被重写)
执行程序。
A a1 = new A();A a2 = new B();,a1 是多态形式1。看如下代码。System.out.println(a1.show(b));A中的show方法只有D A 做形参,没有B做形参的,然而A是B的父类,所以,这里实现的是多态形式1。 System.out.println(a1.show(c));同上一个,A是C的间接父类。System.out.println(a1.show(d));由于有D做形参的方法,所以直接使用。
System.out.println(a2.show(b));这个比较复杂, 明确一点很重要:a2是A类的引用,只能引用A中已有的方法,没有的方法不能引用,有人会说为什么不是 “B and B”,输出“B and B”的方法是子类B的方法,显然不会调用。具体过程而是查看A中的方法,发现没有以B为参数的方法,但有以A为参数的方法,父类为形参,这里又是第一种形式的多态,于是就调用这个方法,但是这个方法在B中重写了,所以就会调用子类的方法输出“B and A”。System.out.println(a2.show(c));同理,C的间接父类是A。System.out.println(a2.show(d)); A中有以D为参数的方法,直接调用。
System.out.println(b.show(b));查看B中有没有以B为参数的方法,直接调用B的以B为参数的方法。System.out.println(b.show(c)); 查看B中有没有以C为参数的方法,但是没有,于是查找父类中有没有以B为参数的方法。也没有,于是查找B中有没有以父类B为参数的方法,索性,这里有所以就调用。假设,这里没有的话,就会继续查找有没有以间接父类A为参数的方法。System.out.println(b.show(d)); 查找B中有没有以D为参数的方法,但是没有,于是看看从父类继承来的方法中有没有以D为参数的方法,显然有,所以调用并输出。
总结
明确多态的两种形式,谨记父类引用只能调用父类的方法,不能调用子类中的方法。如果调用到了子类的方法,那么一定是子类中重写的方法。
super关键字用于调用子类中从父类继承得到的成员变量和方法,this关键字用于调用当前对象的属性和方法。
以上就是动力节点java培训机构小编为大家分享的“Java继承多态经典案例”的内容,希望对大家有帮助,更多java最新资讯请继续关注动力节点java培训机构官网,每天会有精彩内容分享与你。
Java继承多态经典案例分享相关推荐
- 韩顺平 javascript教学视频_学习笔记20_多态经典案例_补讲闭包细节
多态经典案例 经典案例,看代码: <html> <head> <script language="javascript"> function M ...
- 利用SEO技术赚钱经典案例分享
利用SEO技术赚钱相信很多SEOer都想过,平时上上班闲暇时间赚点外快,多爽.首先通过利用SEO技术来做一些项目,是可以赚钱的,而且渠道也是非常多的,但是想要马上实现SEO赚钱也是不易的,因为骗子太多 ...
- k8s中java内存泄漏,Kubernetes 案例分享:如何避免 JVM 应用内存耗尽
原标题:Kubernetes 案例分享:如何避免 JVM 应用内存耗尽 编译:ImportNew/唐尤华srvaroa.github.io/jvm/kubernetes/memory/docker/o ...
- Java多线程经典案例分享
汇总 案例一 案例二 案例三 案例四 案例五 案例六 案例七 案例一 实现一个容器,提供两个方法,add(),count() 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数 ...
- Java继承的综合案例——群主发红包
群主发普通红包.某群有多名成员,群主给成员发普通红包.普通红包的规则: 群主的一笔金额,从群主余额中扣除,平均分成n等份.,让成员领取. 成员领取红包后,保存到成员余额中. 请根据描述,完成案例中所有 ...
- JAVA继承的综合案例——群主发普通红包
群主发普通红包 一.问题描述 群主发普通红包.某群有多名成员群主给成员发普通红包.普通红包的规则: 1.群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取. 2.成员领取红包后,保存到成员余 ...
- 基于Java多线程操作文件案例分享
场景描述:某文件夹下有很多文件和文件夹,要求读取出该文件夹下的所有文件,并将文本打印输出. 案例分析:假设该文件夹下有10个文件,那么我们将所有的文件遍历一遍打印输出就可以了.但如果有100个, 10 ...
- java 继承多态的一些理解和不理解
1.向上转型的一个误区 一直以为Child 继承Parent以后, Parent p = new Child(); p可以调用Child类中拓展Parent的方法,原来必须在强制转换成Child类才 ...
- 慢sql治理经典案例分享
简介:菜鸟供应链金融慢sql治理已经有一段时间,自己负责的应用持续很长时间没有慢sql告警,现阶段在推进组内其他成员治理应用慢sql.这里把治理过程中的一些实践拿出来分享下. 作者 | 如期 来源 | ...
最新文章
- Unix toolbox注解2之Linux系统状态用户和限制
- 用CMake编译运行在网上下载的源文件src
- Kettle使用_26 根据增删改标识处理数据
- tomcat catalina localhost 没有项目_实用shell脚本--一键配置tomcat定期日志清理功能
- 前端学习(2959):axios介绍
- java学习笔记④MySql数据库--03/04 DQL查询
- 392. Is Subsequence
- 计算机的系统组成说课教案,计算机系统组成说课稿.doc
- RHEL4下建立sendmail服务器
- 高校计算机成绩管理系统开题报告,高校科研管理系统_高校科研管理系统开题报告...
- idea远程调试debug
- excel转word后表格超出页面_excel表格粘贴到word太宽显示不全怎么办?
- vss服务器状态失败_VSS常犯错误(转载)
- 企业级需求管理工具选型报告(2020年3月20日)
- spring上传文件
- 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折
- 挺带劲!这款开源数据库迁移工具超牛逼
- python绘制网络拓扑图_python绘制网络拓扑_网络拓扑的python表示
- 创业板、融资融券被寄予厚望
- Nature综述:未培养微生物的新兴培养技术
热门文章
- 关于PChar(@string)的疑惑
- datatables 获取 pageLength 和 pageStart,重新获取table数据
- Powershell实战之管道参数绑定
- Linux中main是如何执行的
- 智慧城市不是“交钥匙”工程 信息技术是根本
- Akamai托管服务应对多重网络性能挑战
- Xtrabackup的“流”及“备份压缩”功能
- windows server 2003 r2 64位web服务器安装配置注意事项
- Android httpUrlConnection的基本使用
- uid(组件id) = userId + appId (android多用户)