今天动力节点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继承多态经典案例分享相关推荐

  1. 韩顺平 javascript教学视频_学习笔记20_多态经典案例_补讲闭包细节

    多态经典案例 经典案例,看代码: <html> <head> <script language="javascript"> function M ...

  2. 利用SEO技术赚钱经典案例分享

    利用SEO技术赚钱相信很多SEOer都想过,平时上上班闲暇时间赚点外快,多爽.首先通过利用SEO技术来做一些项目,是可以赚钱的,而且渠道也是非常多的,但是想要马上实现SEO赚钱也是不易的,因为骗子太多 ...

  3. k8s中java内存泄漏,Kubernetes 案例分享:如何避免 JVM 应用内存耗尽

    原标题:Kubernetes 案例分享:如何避免 JVM 应用内存耗尽 编译:ImportNew/唐尤华srvaroa.github.io/jvm/kubernetes/memory/docker/o ...

  4. Java多线程经典案例分享

    汇总 案例一 案例二 案例三 案例四 案例五 案例六 案例七 案例一 实现一个容器,提供两个方法,add(),count() 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数 ...

  5. Java继承的综合案例——群主发红包

    群主发普通红包.某群有多名成员,群主给成员发普通红包.普通红包的规则: 群主的一笔金额,从群主余额中扣除,平均分成n等份.,让成员领取. 成员领取红包后,保存到成员余额中. 请根据描述,完成案例中所有 ...

  6. JAVA继承的综合案例——群主发普通红包

    群主发普通红包 一.问题描述 群主发普通红包.某群有多名成员群主给成员发普通红包.普通红包的规则: 1.群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取. 2.成员领取红包后,保存到成员余 ...

  7. 基于Java多线程操作文件案例分享

    场景描述:某文件夹下有很多文件和文件夹,要求读取出该文件夹下的所有文件,并将文本打印输出. 案例分析:假设该文件夹下有10个文件,那么我们将所有的文件遍历一遍打印输出就可以了.但如果有100个, 10 ...

  8. java 继承多态的一些理解和不理解

    1.向上转型的一个误区 一直以为Child 继承Parent以后, Parent p = new Child();  p可以调用Child类中拓展Parent的方法,原来必须在强制转换成Child类才 ...

  9. 慢sql治理经典案例分享

    简介:菜鸟供应链金融慢sql治理已经有一段时间,自己负责的应用持续很长时间没有慢sql告警,现阶段在推进组内其他成员治理应用慢sql.这里把治理过程中的一些实践拿出来分享下. 作者 | 如期 来源 | ...

最新文章

  1. Unix toolbox注解2之Linux系统状态用户和限制
  2. 用CMake编译运行在网上下载的源文件src
  3. Kettle使用_26 根据增删改标识处理数据
  4. tomcat catalina localhost 没有项目_实用shell脚本--一键配置tomcat定期日志清理功能
  5. 前端学习(2959):axios介绍
  6. java学习笔记④MySql数据库--03/04 DQL查询
  7. 392. Is Subsequence
  8. 计算机的系统组成说课教案,计算机系统组成说课稿.doc
  9. RHEL4下建立sendmail服务器
  10. 高校计算机成绩管理系统开题报告,高校科研管理系统_高校科研管理系统开题报告...
  11. idea远程调试debug
  12. excel转word后表格超出页面_excel表格粘贴到word太宽显示不全怎么办?
  13. vss服务器状态失败_VSS常犯错误(转载)
  14. 企业级需求管理工具选型报告(2020年3月20日)
  15. spring上传文件
  16. 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折
  17. 挺带劲!这款开源数据库迁移工具超牛逼
  18. python绘制网络拓扑图_python绘制网络拓扑_网络拓扑的python表示
  19. 创业板、融资融券被寄予厚望
  20. Nature综述:未培养微生物的新兴培养技术

热门文章

  1. 关于PChar(@string)的疑惑
  2. datatables 获取 pageLength 和 pageStart,重新获取table数据
  3. Powershell实战之管道参数绑定
  4. Linux中main是如何执行的
  5. 智慧城市不是“交钥匙”工程 信息技术是根本
  6. Akamai托管服务应对多重网络性能挑战
  7. Xtrabackup的“流”及“备份压缩”功能
  8. windows server 2003 r2 64位web服务器安装配置注意事项
  9. Android httpUrlConnection的基本使用
  10. uid(组件id) = userId + appId (android多用户)