多态总结

来源:互联网 发布:熟shou 知乎 编辑:程序博客网 时间:2024/05/16 08:40

多态的问题理解:

class 孔子爹 {

public int age = 40;

public void teach() {

System.out.println("讲解JavaSE");

}

}

class 孔子 extends 孔子爹 {

public int age = 20;

public void teach() {

System.out.println("讲解论语");

}

public void playGame() {

System.out.println("英雄联盟");

}

}

//Java培训特别火,很多人来请孔子爹去讲课,这一天孔子爹被请走了

//但是还有人来请,就剩孔子在家,价格还挺高。孔子一想,我是不是可以考虑去呢?

//然后就穿上爹的衣服,带上爹的眼睛,粘上爹的胡子。就开始装爹

//向上转型

孔子爹 k爹 = new 孔子();

//到人家那里去了

System.out.println(k.age); //40

k.teach(); //讲解论语

//k.playGame(); //这是儿子才能做的

//讲完了,下班回家了

//脱下爹的装备,换上自己的装备

//向下转型

孔子 k = (孔子) k

System.out.println(k.age); //20

k.teach(); //讲解论语

k.playGame(); //英雄联盟



多态中的成员访问特点:
A:成员变量
编译看左边,运行看左边。
B:构造方法
创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。
C:成员方法
编译看左边,运行看右边。
D:静态方法
编译看左边,运行看左边。
(静态和类相关,算不上重写,所以,访问还是左边的)

由于成员方法存在方法重写,所以它运行看右边。


多态的弊端:
不能使用子类的特有功能。

我就想使用子类的特有功能?行不行?
行。

怎么用呢?
A:创建子类对象调用方法即可。(可以,但是很多时候不合理。而且,太占内存了)
B:把父类的引用强制转换为子类的引用。(向下转型)

对象间的转型问题:
向上转型:
Fu f = new Zi();
向下转型:
Zi z = (Zi)f; //要求该f必须是能够转换为Zi的。




0 0
原创粉丝点击