ハッシュマップ(サンプルメジャーを含むsampleSpace)を含む抽象クラス(RandomEvent)があります。このハッシュマップは、子クラスに作成されなければなりません。 子クラスでのみ表示および編集可能にする方法はありますか?抽象クラスを置くのと同じパッケージにはありませんか? これはJavaクラスだけを使って解決することはできないようです...多分いくつかのパターンがありますか? は、これは私がやったことです: 子クラスからコレクションにアイテムを追加する
public abstract class RandomVariable<Sample> {
private final Hashtable<Sample, Integer> sampleSpace;
private boolean setted;
public RandomVariable() {
sampleSpace = new Hashtable<>();
setted = false;
setSampleSpace();
setted = true;
}
public Sample fireEvent() {
//return one sample chosen randomly according to the probability measure
}
protected Map<Sample, Integer> getSampleSpace() {
if(setted==true) {
Map<Sample, Integer> ret = new Hashtable<>();
ret.putAll(sampleSpace);
return ret;
}
return sampleSpace;
}
protected abstract void setSampleSpace();
public double getProbability(final Set<Sample> subset) {
//return probability of a subset of the sample space
}
public double getProbability(Sample sample) {
//return probability a the sample
}
public boolean isSetted() {
return setted;
}
}
のでsetSampleSpace()メソッドは、(正確なサンプルセット付き)、具体的なランダムイベントを定義します子供のクラスで実装する必要があります。 はここで例:保護されたとして、C言語で
public class Coin extends RandomVariable<String> {
@Override
protected void setSampleSpace() {
if(!isSetted()) {
super.getSampleSpace().put("head", 1);
super.getSampleSpace().put("back", 1);
}
}
}
++私はちょうどHashMapを宣言しているだろうが、私は今のJavaを勉強することだし、それはアクセス修飾子にいくつかの違いがあるようです。 答えをありがとう!