博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多态存在的条件
阅读量:7197 次
发布时间:2019-06-29

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

hot3.png

多态存在的3个必要条件:

1.要有继承

2.要有方法的重写
3.父类引用指向子类对象(对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接)

 

 对于多态,可以总结它为:

    一、使用父类类型的引用指向子类的对象;

    二、该引用只能调用父类中定义的方法和变量;

    三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)

    四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。

    五、如果继承的子类继承父类的的一个方法后加以重载,则该父类的引用不能使用重载之后的那个方法。

代码示例:

package Class.www.testdescription;public class Animal { private String str; public void voice() {  System.out.println("普通叫声"); }}class cat extends Animal { public void voice() {   //子类中对父类 voice 方法的重写  System.out.println("喵喵喵"); }}class Dog extends Animal { public void voice() {  System.out.println("汪汪汪"); } public void lookdoor() {  System.out.println("看门的小狗..."); }}class Tiger extends Animal { public void voice() {  System.out.println("哇哇哇"); }}
package Class.www.testdescription;public class Test { public static void testanimalvoice(Animal c) {  c.voice(); } public static void main(String[] args) {  Animal a = new cat(); // 父类的引用指向子类的对象  Animal b = new Dog(); // new后面一定是一个类,它是用来创建一个对象或实例,一个普通类在没有new之前他的属性,方法在内存中都是不存在的,  Animal c = new Tiger();//也就是说, 只有new后这些才会在内存中存在。也就是说只有new了之后,这个类才能用.  testanimalvoice(a);  testanimalvoice(b);  testanimalvoice(c);  Dog b2 = (Dog) b; // 类对象的强制转化  b2.lookdoor(); }}

转载于:https://my.oschina.net/kaixuan1995/blog/362103

你可能感兴趣的文章
Redis笔记3-redis事务
查看>>
日本保险公司引进IBM Watson,裁员近30%
查看>>
第64天:CSS常用命名规范,有用!
查看>>
PHP代码审计笔记--命令执行漏洞
查看>>
redis成长之路——(七)
查看>>
[转]JDK、JRE、JVM三者间的关系
查看>>
TomTom收购Autonomos,自动驾驶又有新玩家入场
查看>>
DOM(文档对象模型)基础加强
查看>>
Ubuntu 16.04下安装Charles抓包工具
查看>>
python常用数据类型操作-时间日历
查看>>
Expert 诊断优化系列------------------你的CPU高么?
查看>>
量子电路制冷器:让量子计算更加可靠!
查看>>
大数据项目为什么失败,2017年将有何不同
查看>>
区块链概念1:Hash 算法
查看>>
无人机市场是泡沫,一碰就碎?
查看>>
一文看懂量子十问(上篇)
查看>>
Linux运维工程师笔试题系列1(30题)
查看>>
国内智能硬件是时候换“新衣”了
查看>>
北京出台自动驾驶新规,我国首批自动驾驶测试道路即将推出
查看>>
阿里云增长超华尔街预期,2024年规模可达285亿美元
查看>>