繼承 Tricky
Prerequisites:
父類別與祖父類別都有相同屬性
父類別與祖父類別都有hobby。
1
2
3
4
5
6
7
8
9
10
11
12
13
class GrandPa {
String name = "GrandPa";
String hobby = "Swimming";
int age = 88;
}
class Father extends GrandPa{
String name = "Father";
String hobby = "Running";
private int age = 50;
}
class Child extends Father{
String name = "Child";
}
請問呼叫子類別hobby,會印出那個hobby?
1
2
3
4
5
6
public class Test {
public static void main(String[] args) {
Child child = new Child();
System.out.println(child.hobby);
}
}
Running
從執行結果,子類會先從父類別搜尋有沒有hobby這個屬性,若有的話,就傳回,不再去搜尋祖父類別。
父類別屬性是private,祖父類別不是private
上面的程式碼中,父類別的age是private,但祖父類別的age不是private,請問子類別使用age,會發生什麼事?
1
2
3
4
5
6
public class Test {
public static void main(String[] args) {
Child child = new Child();
System.out.println(child.age);
}
}
執行結果是無法存取age屬性,因為先從父類別搜尋屬性,有搜尋到age屬性,但age是private,就傳回無法存取。因為有搜尋到屬性,即便是private,就不會再往祖父類別搜尋。