作者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/cn.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