看板 java 關於我們 聯絡資訊
※ 引述《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)
true0422:我猜原po是想要看到c.x出現0? 10/03 19:55
akaing:利用upcasting or downcasting 來達到目的? 10/05 10:58