博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java的duotaix
阅读量:7294 次
发布时间:2019-06-30

本文共 1425 字,大约阅读时间需要 4 分钟。

今天看到博客园上一位原创的博文讲解Java多态性,觉得不错,不过没有解释,特此注释,侵删

public class MyTest {    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));        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));                a2.name();    }}class A {    public void name(){        System.out.println("My Name is A");    }    public String show(D obj){          return ("A and D");    }    public String show(A obj){        return ("A and A");    }   }   class B extends A{    public void name(){        System.out.println("My Name is B");    }    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{}

结果是

A and AA and AA and DB and AB and AA and DB and BB and BA and DMy Name is B

这里主要说一下

A a2 = new B()

关于向上转型:定义了B类,编译器在编译的时候查找A类里面的方法,但是在运行的时候,JVM去运行B类里面的方法,如果B类中不存在就运行A类的方法。

也就是说,执行a2.show(b)时,先去A类中查找,找到show(A obj),运行的时候运行B类中的show(A obj);执行a2.show(d)时,只会执行A类中的show(D obj),因为B类中没有这个方法

转载于:https://www.cnblogs.com/AndersonX/p/8330938.html

你可能感兴趣的文章
cd ls
查看>>
linux学习命令总结⑩①
查看>>
【好程序员笔记分享】C语言之交换变量的值
查看>>
linux 安装和初级优化
查看>>
C#系列-多样化的程序分支[7]
查看>>
Keepalived配置文件详解(以Haproxy作为负载均衡器)
查看>>
megacli创建RAID10过程详解
查看>>
Linux系统引导过程
查看>>
【apache】mod_proxy 和 mod_rewrite实现js跨域
查看>>
林锐博士谈考研
查看>>
Vant Weapp小程序蹲坑之使用checkbox组件
查看>>
重载operator<<运算符时第二个参数最好不要写成指向对象的指针
查看>>
在ubuntu上编译 wpa_supplicant-2.6
查看>>
68ES6_解构_数组操作_对象操作
查看>>
poj——1470 Closest Common Ancestors
查看>>
Mysql Master/Slave Set Up
查看>>
自动化部署Newton版OpenStack (一)
查看>>
我的友情链接
查看>>
几个经典的Spring学习资料
查看>>
Objective-C 常用代码
查看>>