java多态中成员方法的使用特点

java多态中成员方法的使用特点

在多态的代码当中,成员方法的访问规则是:

​ 看new的是谁,就优先用谁,没有则向上找。

口诀:

编译看左边,运行看右边。

对比一下:

成员变量:

编译看左边,运行还看左边。

成员方法:

编译看左边,运行看右边。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package cn.itcast.day10.demo05;


public class Demo02MultiMethod {

public static void main(String[] args) {
Fu obj = new Zi(); // 多态

obj.method(); // 父子都有,优先用子
obj.methodFu(); // 子类没有,父类有,向上找到父类

// 编译看左边,左边是Fu,Fu当中没有methodZi方法,所以编译报错。
// obj.methodZi(); // 错误写法!
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package cn.itcast.day10.demo05;

public class Fu /*extends Object*/ {

int num = 10;

public void showNum() {
System.out.println(num);
}

public void method() {
System.out.println("父类方法");
}

public void methodFu() {
System.out.println("父类特有方法");
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package cn.itcast.day10.demo05;

public class Zi extends Fu {

int num = 20;

int age = 16;

@Override
public void showNum() {
System.out.println(num);
}

@Override
public void method() {
System.out.println("子类方法");
}

public void methodZi() {
System.out.println("子类特有方法");
}
}