我是Java和OOP的新手,我可以在Java中創建一個受保護的成員嗎?我想從一個子類訪問它
我在一個類A中使用了一個私有子類(實際上是一個結構體)B,一切都很順利,直到我決定做一個父類下的子類B.我想公開一些類C.
的保護成員。例如:
public class A {
private class B extends C {
public int product;
public int x;
public int y;
public void add() {
product=x+y;
}
}
B b=new B;
b.x=1;
b.y=2;
b.multiply();
System.out.println(b.product+"="+b.x+"x"+b.y);
public class C {
protected int x;
protected int y;
public int sum;
public C(px,py) {
x=px;
y=py;
}
public void sum() {
sum=x+y;
}
}
我也得到
隱超常量對於默認的構造函數,未定義C()。 必須定義一個明確的構造函數
當然,我可以刪除擴展C,並回到我以前的東西。或者我可以讓一個getter/setter。但我認爲可以接受的內部結構是可以理解的,它應該能夠擴展其他類。
哇,快 感謝3^10,這是m/s響應... 我剛想通了,我需要一個受保護的默認構造函數 – TiansHUo 2010-02-04 09:52:38
@Skeet:你真的想讓B的實例有兩個x字段和兩個y字段嗎?你意識到他們將是獨立的領域,不是嗎? 不,我不知道你是什麼意思,他們分開領域?當我調用超類C中的sum()時,它會起作用嗎? – TiansHUo 2010-02-04 09:56:25
@TiansHUo:不,sum()將總結C中聲明的字段,這些字段完全獨立於B中聲明的字段。(我還應該指出'product()'和'sum()'可能是最好的返回值而不是將它設置在另一個字段中。) – 2010-02-04 10:00:40