多态中成员变量、成员方法等的特点

 1 public class Test {
 2     public static void main(String[] args) {
 3         Parent p = new Son();
 4         p.show();
 5         System.out.println("a的值为:"+p.a);
 6     }
 7 }
 8 
 9 class Parent {
10     int a=10;
11     public Parent() {
12         System.out.println("父类无参构造,a的值为:"+a);
13     }
14     public void show() {
15         System.out.println("父类方法");
16     }
17 }
18 
19 class Son extends Parent {
20     int a=20;
21     public Son() {
22         System.out.println("子类无参构造,a的值为:"+a);
23     }
24     public void show() {
25         System.out.println("子类方法");
26     }
27 }

运行结果:

1 父类无参构造,a的值为:10
2 子类无参构造,a的值为:20
3 子类方法
4 a的值为:10

【结论】

多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
-----------------------------------------------------------------------------------------------------
1)Parent p = new Son(); //多态必须符合右侧类(Son)包含于左侧类(Parent),例如 动物 d = new 猫(),猫是动物。

2)构造方法:创造子类对象时,一定会先访问父类构造方法,对父类数据进行初始化。

3)成员变量:通过多态调用的成员变量仍是父类的成员变量,因为成员变量不存在override(覆盖)问题。


4)成员方法:通过多态调用的成员方法一般仍是父类中的方法,若在相应子类中被override(覆盖),则调用子类重写的方法。

5)静态方法:通过多态调用的静态方法仍是父类的静态方法,因为静态方法虽然能被子类的静态方法“重写”,但严格来讲算不上是override(覆盖)。
posted @ 2018-01-30 20:09  Schiller_Hu  阅读(1411)  评论(0编辑  收藏  举报