所以我的问题是我有一个名为GeometricFigure2
的类,其中包含width
和height
等字段。我有一个名为SidedObject
的界面,它包含一个显示数字有多少边的方法
public interface SidedObject
{
public void displaySides();
}
我有两个名为Square2
和Triangle2
的子类,它们扩展GeometricFigure2
并实现SidedObject
。这两个类都包含displaySides()
方法,如下所示:
public void displaySides()
{
System.out.println("The square has 4 sides.");
}
最后,我有一个名为UseGeometricFigure2
的类,它使用两个子类。我创建了一个类型为GeometricFigure2
的数组,用于存放两个Square2
个对象和两个Triangle2
个对象:
GeometricFigure2[] geoRef = new GeometricFigure2[4];
geoRef[0] = new Square2();
geoRef[1] = new Square2();
geoRef[2] = new Triangle2();
geoRef[3] = new Triangle2();
然后我创建一个for循环来迭代数组并为数组中的每个对象调用displaySides()
方法:
for(int i=0; i<4; i++)
{
geoRef[i].displaySides();
}
问题是当我尝试编译它时给了我一个“找不到符号”的错误。它正在查找displaySides()
类中的GeometricFigure2
,它是数组类型。如何在此设置中正确调用displaySides()
方法?
答案 0 :(得分:1)
您有三种选择:
GeometricFigure2
实施您的SidedObject
界面。SidedObject[]
类型,而不是GeometricFigure2[]
。SidedObject
:((SidedObject) geoRef[i]).displaySides();
答案 1 :(得分:0)
对于来自displaySides()
的{{1}}方法来处理SideObject
的实例,您需要修改GeometricFigure2
以实施GeometricFigure2
。