java多态例子
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
代码部分:
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多态例子的更多相关文章
- C++和java多态的区别
		C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报  转载自:http://www.cnblogs.com/plmnko/archive ... 
- 深入理解Java多态机制
		从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ... 
- 从JVM角度看Java多态
		首先,明确一下,Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 package test.xing; class Father{ prot ... 
- Java——多态浅析
		前言 在面向对象程序设计语言中,多态是继数据抽象和继承之后的第三种基本特性.多态的含义是什么,有什么作用以及在Java中是怎么实现的?下面将做介绍. 什么是多态 简单点说就是"一个接口,多种 ... 
- 对java多态的理解
		java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new C ... 
- Java - 22 Java 多态
		Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态性是对象多种表现形式的体现. 比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫.小狗.蜥蜴 ... 
- Java多态的向上转型和向下转型
		Java多态的向上转型和向下转型 向上转型:(子类转为父类,自动转型) 格式 :父类类型 变量名 = new 子类类型(); 注:子类赋值给父类,那这时这个父类就能调用子类的方法 向下转型:(父类转为 ... 
- Java多态的一些陷阱
		Java多态是如何实现的? Java的多态和C++一样,是通过延时绑定(late binding)或者说运行时绑定(runtime binding)来实现的.当调用某一个对象引用的方法时,因为编译器并 ... 
- Java多态-如何理解父类引用指向子类对象
		java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new ... 
随机推荐
- 【freemaker】之自定义变量,特殊变量 globals ,循环对象取值
			entity public class Employee { private Integer id; private String name; private Integer age; private ... 
- Maven使用--打包和运行
			将项目进行编译.测试后,下一个重要步骤就是打包.简单执行命令mvn clean package进行打包.Maven会在打包前执行编译.测试等操作. 在打包后,执行安装任务install ... 
- Linux使用笔记: 定制core dump文件的文件名
			在开发过程中,当一个Linux程序异常退出时,我们可以通过core文件来分析它异常的详细原因.缺省情况下,Linux在程序异常时不产生core文件,要想让程序异常退出时产生core dump文件,需要 ... 
- Standing on Shouder of Giants
			Zachary_Fan 如何一步一步用DDD设计一个电商网站(二)-- 项目架构 http://www.cnblogs.com/Zachary-Fan/p/6012454.html HTTP 权威指南 ... 
- JAVA 聊天窗口
			//聊天窗口 import java.awt.*; import javax.swing.*; public class Jiemian9 extends JFrame{ JTextArea wby; ... 
- ndk的一些概念
			什么场景应用ndk 1.代码的包含,apk的java层代码容易被反编译,c/c++被反编译难度非常大 2.NDK中调用 第三方C/C++库,因为大部分的开源库都是c/c++编写,比如opencv,op ... 
- js判断手机是的操作系统
			var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; retu ... 
- 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类
			快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ... 
- 算法库:blas, lapack, cblas, clapack, armadillo, openblas, mkl关系
			关于blas的介绍介绍见:http://www.cnblogs.com/dzyBK/p/4983953.html blas:提供向量和矩阵的基本运算,用fortran编写. lapack:提供向量和矩 ... 
- [ZOJ 3662] Math Magic (动态规划+状态压缩)
			题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3662 之前写过这道题,结果被康神吐槽说代码写的挫. 的确,那时候 ... 
