作者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