推 neigence:parent裡面有child的指標或物件 本來就天理不容= = 05/04 15:10
今天意外發現Java的protected這個修飾是可以向上的
class Parent {
public Parent() {
}
public Children createChildren(){
return new Children();
}
}
class Children extends Parent {
protected Children() {
}
protected String say() {
return "I am Children";
}
}
main(){
Parent parent=new Parent();
Children child=parent.createChildren();
System.out.println(child.say());
}
像這樣一段程式碼竟然可以跑
但是這樣一段架構的程式碼在C++ 還是C#都是不合法的
後來看了一下網路說明
protected好像只要同個packge 就算不是同個繼承下的依然可以呼叫的樣子
但是這樣不會失去保護的作用嗎?
有沒有高手能幫忙解釋一下
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.196.154