我在派生類中創建了基類的實例並試圖訪問受保護的成員。java-protected成員使用基類實例在派生類中訪問
我可以直接訪問派生類中的受保護成員,而無需實例化基類。
基類:
package com.core;
public class MyCollection {
protected Integer intg;
}
在同一封裝中派生類 -
package com.core;
public class MyCollection3 extends MyCollection {
public void test(){
MyCollection mc = new MyCollection();
mc.intg=1; // Works
}
}
在不同的包派生類 -
package secondary;
import com.core.MyCollection;
public class MyCollection2 extends MyCollection{
public void test(){
MyCollection mc = new MyCollection();
mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
}
}
如何能夠訪問當派生類也在s中時,派生類中使用基類實例的基類的受保護成員艾米包,但派生類時,不是在不同的包?
如果我將受保護的成員標記爲「靜態」,那麼我可以使用駐留在不同包中的派生類中的基類實例來訪問基類的受保護成員。
可能重複(HTTP:/ /stackoverflow.com/questions/332920/java-protected-access-not-working)---其實這是錯誤的愚蠢!抱歉!這絕對是一個騙局。 – polygenelubricants 2010-06-30 11:25:10
不用擔心,你的IDE不會做出任何差別的問題,因爲這是對Java語言本身的語義。的 – 2010-06-30 11:29:01
可能重複[爲什麼我不能訪問受保護的Java方法甚至以爲我已經擴展的類?(http://stackoverflow.com/questions/1622219/why-cant-i-access-protected-java-method -even-thought-iive-extended-the-class) – starblue 2010-06-30 11:36:27