博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 多态 虚方法
阅读量:5096 次
发布时间:2019-06-13

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

Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

看代码:

package com.company;public class Main {    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));    }}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 {}

第一遍看的时候,第四,第五个看不懂

A a2=new B()

栈中的引用变量是A,堆中的实例变量是B。

将子类的实例,赋值给父类的引用。就是向上转型。

向上转型,在运行时,会遗忘子类对象中与父类对象中不同的方法。也会覆盖与父类中相同的方法--重写。 

所以a2,可以调用的方法就是,A中有的,但是B中没有的方法,和B中的重写A的方法。

=============================================================================================

 

http://www.cnblogs.com/jack204/archive/2012/10/29/2745150.html

转载于:https://www.cnblogs.com/hongdada/p/5809777.html

你可能感兴趣的文章
Python pandas 0.19.1 Intro to Data Structures 数据结构介绍 文档翻译
查看>>
《寿康宝鉴》
查看>>
Mongodb
查看>>
软工个人总结
查看>>
如何将u盘、移动硬盘转化为活动分区--绝招
查看>>
MYSQL 5.7 修改密码、登录问题
查看>>
linux 同步时间 调试core内核
查看>>
PAT Basic 1085
查看>>
springMVC传递一组对象的接受方式
查看>>
收藏一个虚函数表以及虚表指针介绍的文章
查看>>
POJ---2492 A Bug's Life[并查集]
查看>>
[BZOJ1195] [HNOI2006]最短母串
查看>>
final阶段140字评论
查看>>
zookeeper集群搭建
查看>>
Jenkins-在windows上配置自动化部署(Jenkins+Gitblit)
查看>>
ng-if可见
查看>>
[AGC003]E - Sequential operations on Sequence
查看>>
Effective JAVA 思维导图
查看>>
【转】mysqldump
查看>>
Python Matplotlib作图指南
查看>>