作者aoksc (重出江湖)
看板java
標題[問題] 使用super呼叫父類別屬性
時間Sun Oct 2 21:00:33 2011
請問各位
一般使用super會呼叫到上層類別的成員
如果現在C繼承B B繼承A
三個類別都有變數x
那如果在C類別物件想操控A類別隱藏的x屬性
請問有什麼方法呢?
我剛試了super好像只能呼叫到上一層的x
目前我只想到應該可以在B類別建立一個方法
再由這個方法使用super再往上一層
不知道還有其他方法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.131.106
1F:推 PsMonkey:隱藏就是希望不被找到啊 XD 10/02 21:20
2F:→ aoksc:不是這個意思吧XD 10/02 21:21
3F:推 LaPass:正常方法好像不行,透過Reflection好像可以(那部分我只喵過 10/02 21:22
4F:推 LaPass:一眼) 10/02 21:24
5F:→ qrtt1:為何要用那麼扭曲的寫法,跟詭異的繼承結構。 10/02 21:29
6F:→ aoksc:我只是想討論一下另一種情況 實際上應該是不會有人這樣寫 10/02 21:35
7F:推 lachtchlee:use public setXXX() public getXXX() 10/02 21:50
8F:推 qrtt1:不,真的有人這麼寫。還變成了很難搞的bug (維護舊code有感) 10/02 21:57
9F:推 LaPass:protected 可以限定子類別的物件可讀、寫,前提是你動的A 10/02 21:59
10F:→ LaPass:前提是你動的了A 10/02 22:00
11F:→ lachtchlee:是指哪一樓 ? 10/02 22:00
12F:→ aoksc:這樣子寫用的人不會錯亂嗎= = 變數都同名耶… 10/02 22:12
13F:→ qrtt1:所以,大家都以為用到了『對的』instance。杯具~~~ 10/02 22:27
14F:推 LaPass:java的繼承真的怪怪的 = =" 10/02 23:19
15F:→ aoksc:這沒什麼好奇怪的吧 這應該是繼承必然會發生的現象 10/02 23:21
16F:推 qrtt1:語法沒規定不能這麼寫,但並不表示這麼寫合理。 10/02 23:39
17F:推 qrtt1:所以,怪怪的是寫的人,不是 Java 10/02 23:39
18F:推 LaPass:覺得應該把每個不希望被繼承的東西前面都加final..... 10/03 08:39
19F:→ sbrhsieh:這個想法有欠考慮...加了 final 有其它的 side-effect 10/03 23:33