本帖最后由 samove 于 2015-7-5 08:26 编辑
- <p><img alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=80463&size=300x300&key=51abfa7cfdcc5ff2&nocache=yes&type=fixnone" border="0" aid="attachimg_80463"></p><p>class Fu
- {
- public Fu(){}
-
- public void show()
- {
- System.out.println("Fu-----执行");
- }
-
- }
- class Zi extends Fu
- {
- public Zi(){}
- /*
- public void show()
- {
- System.out.println("Zi------执行");
- }
- */
- }
- class Test
- {
- public static void main(String[] args)
- {
- Fu f = new Zi();
- f.show();
- }
- }</p>
复制代码
多态前提条件:1、要有继承关系。2、要有方法重写。3、要有父类引用指向子类对象。
例如:Fu f = new Zi();
不过,我遇到一点有意思的东东。看上面代码 ↑ ↑ ↑ ↑ ↑
上面Zi中的重写show()被注释掉后,同样是多态,说明:重写只是多态的充分条件,而不是多态的必要条件。
下面是多态成员特点:
A:成员变量 编译看左边,运行看左边
B:成员方法 编译看左边,运行看右边
C:方法有重写,而变量没有
我个人觉得,应该都看左边,因为,f 毕竟是Fu类对象,只是,成员方法,不能只看左边,还要看看是否有被子类重写,如果有被重写,看重写。
顺便分享一张桌面壁纸。
|
|