Java で内部クラスを拡張することを理解しようとしています。私は周りを読みましたが、私の質問に完全に答えるものは何も見つかりませんでした。だからここに行きます...
私は持っている...
public class Pie{
protected Slice[] slices;
// Pie constructor
public Pie(int n){
sliceGenerator(n)
}
private void sliceGenerator(int n){
slices = new Slice[n];
final float sweepAngle = 360.0f/(float)n;
float startAngle = 0;
for (int i=0;i<n;i++){
slices[i] = new Slice(startAngle);
startAngle += sweepAngle;
}
}
@Override
public String toString(){
for (Slice s:slices){
s.toString();
}
}
// Inner class...
public class Slice{
public Slice(float startAngle){
//set some private fields based on startAngle and generic pie
}
@Override
public String toString(){
return **string based on private fields**
}
}
}
それから私はこれを伸ばします...
public class ApplePie extends Pie{
protected Slice[] slices;
// Apple Pie constructor
public ApplePie(int n){
super(n);
}
// Inner class...
public class Slice extends Pie.Slice{
public Slice(float startAngle){
super(startAngle);
//set some **additional** private fields based on startAngle **specific to apple pie** appleness or something
}
@Override
public String toString(){
return **string based on apple pie specific private fields**
}
}
}
さて、アップルパイを作ってその toString メソッドを呼び出すと、次のようになります...
ApplePie ap = new ApplePie(8);
System.out.println(ap.toString());
アップル パイのスライスに関する情報は取得しませんが、パイのスライスに関する情報は取得します。私のtoString
オーバーライドを無視するか、おそらく私のアップルパイを無視しますSlice
。アップルパイのスライスが参照するように配置するにはどうすればよいApplePie
ですか?
どんな助けでも大歓迎です!パイの参照については申し訳ありません-それは私が取り組んでいる実際のクラスです...