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、方法的多态
继承的初始化顺序:
先初始化父类再初始化子类; 先执行初始化对象中属性,再执行构造方法中的初始化;
方法重写:
如果子类对父类继承的方法不满意,可以重写父类继承的方法。当调用方法时会优先调用子类重写的方法。
浙公网安备 33010602011771号