假設下面的類結構:爲什麼不是Java讓我叫這個保護功能
內部命名空間的命名空間
public abstract class A {
protected int someVal;
protected abstract int action();
}
AB
public class B extends A{
//magically filled with elements ;)
List<A> elements;
protected int action(){
someVal = 42; // OK
int l = 0;
for (A a : elements){
l+= a.action(); //FORBIDDEN!!
}
return l;
}
}
所以蝕意味着我
將'action'的可見性更改爲'pr保護'
我感覺有些被愚弄。
爲什麼我被允許執行操作,但不能調用它?我訪問someVal
也沒有問題。
我很熟悉將B
複製到同一個命名空間,但是我有很多擴展B或類似C和D等的類,並且希望它們按順序排列。
或者更改我的問題: 這個包是否是唯一的方法來強制我的類具有受保護的方法,但是將其隱藏到客戶端代碼中?
這是因爲'a.action()'是** abstract **,它通常意味着它是由基類定義的,但是直到後代才這樣做。沒有'base.action()'來訪問。 –
什麼類型的對象列表A有? – Renjith
@KenWhite我有一個'A'的實際實現列表,它們都被迫執行'action()'。因此不能缺少那種方法 –