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

Posted 化身孤岛的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态中成员变量成员方法等的特点相关的知识,希望对你有一定的参考价值。

 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(覆盖)。

以上是关于多态中成员变量成员方法等的特点的主要内容,如果未能解决你的问题,请参考以下文章

JavaEE基础

Java基础第9天+final关键字多态(上转型,下转型)抽象类(特点,成员特点)接口(特点,成员特点)

多态时:成员特点,成员函数(非静态)

1.0Java 继承与多态 - 成员变量访问特点

关于java中多态的理解

Java基础十二--多态是成员的特点