Re: [問題] 使用super呼叫父類別屬性
※ 引述《aoksc (重出江湖)》之銘言:
: 請問各位
: 一般使用super會呼叫到上層類別的成員
: 如果現在C繼承B B繼承A
: 三個類別都有變數x
: 那如果在C類別物件想操控A類別隱藏的x屬性
: 請問有什麼方法呢?
: 我剛試了super好像只能呼叫到上一層的x
: 目前我只想到應該可以在B類別建立一個方法
: 再由這個方法使用super再往上一層
: 不知道還有其他方法嗎?
如果你講的"A類別隱藏的x屬性"意思不是 A::x 是 private field,那麼
你可以直接把 C reference cast 成 A reference 來 access class A 所
定義的 field。
field access 是完全由 reference type 來決定目標。
class A {
public int x = 0;
}
class B extends A {
public int x = 1;
}
class C extends B {
public int x = 2;
}
public class DemoABC {
public static void main(String[] args) {
C c = new C();
B b = c;
A a = c;
System.out.println(a.x); // 0
System.out.println(b.x); // 1
System.out.println(c.x); // 2
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.26.230
※ 編輯: sbrhsieh 來自: 114.45.26.230 (10/03 00:18)
推
10/03 19:55, , 1F
10/03 19:55, 1F
推
10/05 10:58, , 2F
10/05 10:58, 2F
討論串 (同標題文章)