所以我的问题是我有一个名为 GeometricFigure2
的类,它包含 width
和 height
等字段。我有一个名为 SidedObject
的接口(interface),它包含一个显示图形有多少条边的方法
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();
}
问题是当我尝试编译时出现“找不到符号”错误。它正在数组类型的 GeometricFigure2
类中查找 displaySides()
。如何在此设置中正确调用 displaySides()
方法?
最佳答案
您有三个选择:
- 让
GeometricFigure2
实现您的SidedObject
接口(interface)。 - 将数组声明为
SidedObject[]
类型,而不是GeometricFigure2[]
。 - 将数组变量转换为
SidedObject
:
((SidedObject) geoRef[i]).displaySides();
关于java - 对不同数据类型数组中一种数据类型的对象使用接口(interface)方法? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899785/