【发布时间】:2013-01-10 03:52:35
【问题描述】:
我试图理解在 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?
非常感谢任何帮助!抱歉,我正在使用馅饼参考 - 这是我正在使用的实际课程......
【问题讨论】:
-
@VisionarySoftwareSolutions 请引用。
标签: java class inheritance extends