作者DisdainU (莖莖濡吮汁)
看板java
標題[問題] 關於向上轉型
時間Sat Oct 8 20:54:33 2016
class Derived extends PrivateOverride{}
public class PrivateOverride{
private void f(){
System.out.println("private f()");
}
public static void main(String[] args){
PrivateOverride p=new Derived();
p.f();
}
}
/* output:
private f()
*/
想問的是 既然base class的f()是private
也就代表在Derived中看不到f()
那為什麼例子中卻可以執行出結果?
手機排版 請見諒
-----
Sent from JPTT on my Sony D6653.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.82.32.154
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1475931276.A.45D.html
1F:推 v9290026: 多型概念阿 10/08 20:57
2F:→ ssccg: 看不到不等於不存在,Derived也是一個PrivateOverride當然 10/08 21:14
3F:→ ssccg: 也有f,從看的到f的地方呼叫(PrivateOverride的main)當然有 10/08 21:14
4F:→ pttworld: polymorphism and visibility, specification幫忙你。 10/08 21:21
5F:推 jackblack: 因為建立 Derived 實體時也會建立 PrivateOverride 10/08 23:28
6F:→ jackblack: 實體 10/08 23:28
7F:推 ripple0129: 我覺得這是實作與規格書岐義的點, 理論上不被繼承事 10/09 00:44
8F:→ ripple0129: 實是繼承的, 但是有繼承卻不能夠修改。網路有很多討 10/09 00:44
9F:→ ripple0129: 論吧, 大家對這部分也各有各的觀點。 10/09 00:44
10F:→ ssccg: 我覺得邏輯上和實作上都是當然會被繼承的 10/09 02:56
11F:→ ssccg: 如果文件寫private"不被繼承"那是用字問題 10/09 02:59
12F:→ ssccg: private internal protected friend這些都只是存取限制 10/09 03:00