1 public class Fu {
2 int numFu=10;
3
4 int num=100;
5
6 public void methodFu(){
7 System.out.println(num);
8 }
9 }
1 public class Zi extends Fu {
2
3 int numZi = 20;
4
5 int num = 200;
6
7 public void methodZi() {
8 // 因为本类当中有num,所以这里用的是本类的num
9 System.out.println(num);
10 }
11
12 }
1 /*
2 在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:
3
4 直接通过子类对象访问成员变量:
5 等号左边是谁,就优先用谁,没有则向上找。
6 间接通过成员方法访问成员变量:
7 该方法属于谁,就优先用谁,没有则向上找。
8 */
9 public class Demo01ExtendsField {
10
11 public static void main(String[] args) {
12 Fu fu = new Fu(); // 创建父类对象
13 System.out.println(fu.numFu); // 只能使用父类的东西,没有任何子类内容
14 System.out.println("===========");
15
16 Zi zi = new Zi();
17
18 System.out.println(zi.numFu); // 10
19 System.out.println(zi.numZi); // 20
20 System.out.println("===========");
21
22 // 等号左边是谁,就优先用谁
23 System.out.println(zi.num); // 优先子类,200
24 // System.out.println(zi.abc); // 到处都没有,编译报错!
25 System.out.println("===========");
26
27 // 这个方法是子类的,优先用子类的,没有再向上找
28 zi.methodZi(); // 200
29 // 这个方法是在父类当中定义的,
30 zi.methodFu(); // 100
31 }
32
33 }