lotuspanda

导航

 
 1 public class DispatchTest {
 2     public static void main(String[] args) {
 3         Base b = new Sub(); //父类引用指向子类的对象
 6         System.out.println(b.x);
 8     }
 9 }
10 
11 class Base {
12     int x = 10;
13     public Base() {
14         this.printMessage(); //调用时优先调用子类的方法
15         x = 20;
16     }
17     
18     public void printMessage() {
19         System.out.println("Base.x = " + x);
20     }
21 }
22 
25 class Sub extends Base {
26     int x = 30;
27     public Sub() {
28         this.printMessage();
29         x = 40;
30     }
31     
32     public void printMessage() {
33         System.out.println("Sub.x = " + x);
34     }
35 }

求程序的结果:

Sub.x = 0;
Sub.x = 30;
20;

我做的第一道笔试题。考察的知识是java 面向对象中的 多态

多态即对象的多种形态:

1、引用的多态

  父类的引用可以指向本类的对象;

  父类的引用可以指向子类的对象;

2、方法的多态

继承的初始化顺序:

先初始化父类再初始化子类; 先执行初始化对象中属性,再执行构造方法中的初始化;

方法重写:

如果子类对父类继承的方法不满意,可以重写父类继承的方法。当调用方法时会优先调用子类重写的方法。

posted on 2016-08-21 12:49  lotuspanda  阅读(159)  评论(0)    收藏  举报