多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。

代码部分:

class A {
public String show(D obj) {
return ("A and D");
} public String show(A obj) {
return ("A and A");
}
} class B extends A {
public String show(B obj) {
return ("B and B");
} public String show(A obj) {
return ("B and A");
}
} class C extends B {
} class D extends B {
}

然后开始搞脑子了:

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(a1));
System.out.println(a1.show(a2));
System.out.println(a2.show(a1));
System.out.println(a2.show(a2));
System.out.println(b.show(a1));
System.out.println(b.show(a2));
System.out.println(c.show(a1));
System.out.println(c.show(a2));
System.out.println(d.show(a1));
System.out.println(d.show(a2));
System.out.println("分割线**************************************");
System.out.println(a1.show(b));
System.out.println(a1.show(c));
System.out.println(a1.show(d));
System.out.println(a2.show(b));
System.out.println(a2.show(c));
System.out.println(a2.show(d));
System.out.println(b.show(b));
System.out.println(b.show(c));
System.out.println(b.show(d));
System.out.println(c.show(b));
System.out.println(c.show(c));
System.out.println(c.show(d)); }

运行结果:

A and A
A and A
B and A
B and A
B and A
B and A
B and A
B and A
B and A
B and A
分割线**************************************
A and A
A and A
A and D
B and A
B and A
A and D
B and B
B and B
A and D
B and B
B and B
A and D

为了方便理解,我列了下每个类的method table

A
show(D) -> A.show(D)
show(A) -> A.show(A) B,C, D
show(D) -> A.show(D)
show(B) -> B.show(B)
show(A) -> B.show(A)

java多态例子的更多相关文章

  1. C++和java多态的区别

    C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报  转载自:http://www.cnblogs.com/plmnko/archive ...

  2. 深入理解Java多态机制

    从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...

  3. 从JVM角度看Java多态

    首先,明确一下,Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 package test.xing; class Father{ prot ...

  4. Java——多态浅析

    前言 在面向对象程序设计语言中,多态是继数据抽象和继承之后的第三种基本特性.多态的含义是什么,有什么作用以及在Java中是怎么实现的?下面将做介绍. 什么是多态 简单点说就是"一个接口,多种 ...

  5. 对java多态的理解

    java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new C ...

  6. Java - 22 Java 多态

    Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态性是对象多种表现形式的体现. 比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫.小狗.蜥蜴 ...

  7. Java多态的向上转型和向下转型

    Java多态的向上转型和向下转型 向上转型:(子类转为父类,自动转型) 格式 :父类类型 变量名 = new 子类类型(); 注:子类赋值给父类,那这时这个父类就能调用子类的方法 向下转型:(父类转为 ...

  8. Java多态的一些陷阱

    Java多态是如何实现的? Java的多态和C++一样,是通过延时绑定(late binding)或者说运行时绑定(runtime binding)来实现的.当调用某一个对象引用的方法时,因为编译器并 ...

  9. Java多态-如何理解父类引用指向子类对象

    java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过   Cat c = new ...

随机推荐

  1. oracle imp导入数据到另一个表空间

    http://blog.163.com/darlingchenlin@126/blog/static/7156283420100531431855/ 1.在第一个数据库导出数据:qlyg_xs_db_ ...

  2. 使用 Override 和 New 关键字进行版本控制

    使用 Override 和 New 关键字进行版本控制 C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容. 这具有多方面的意义.例如,这意味着在基类中 ...

  3. [技巧]实际项目中background-image应写在页面上

    摘自:http://www.zhangxinxu.com 因为实际项目中(数据对接时),这肯定是个动态的URL地址,css文件似乎不支持动态URL 地址. <img src="../i ...

  4. Topology的构建

    public class BlackListBolt extends BaseRichBolt{ private static Logger logger = Logger.getLogger(Bla ...

  5. 发布在IIS上的Web程序,调用服务器的COM组件

    场景大致是这样的,在工厂中分布着许多的PDA点,这些PDA点都要进行实时的扫描--打印操作.实现方法是采用网络打印机,然后服务器安装驱动,管理着所有的打印机.然后服务器,发布一个WebService, ...

  6. CentOS 6.5 更新163源(转载)

    From:http://www.cnblogs.com/buffer/p/3426908.html 众所周知,Centos 有个很方便的软件安装工具  yum,但是默认安装完centos,系统里使用的 ...

  7. python异常类型

    python2: BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- Stop ...

  8. 去掉 input type="number" 右边图标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 在delphi的exe文件中嵌入另外一个exe文件

    http://www.cnblogs.com/dabiao/archive/2009/11/28/delphi.html 1.创建rc文件.可以用任意文本编辑器来写.文件格式为:"资源名 资 ...

  10. C++primer 练习13.39

    13.39 编写你自己版本的StrVec,包括自己版本的reserve,capacity(参见9.4节,第318页)和resize(参见9.3.5节,第314页) 13.40 为你的StrVec类添加 ...