[英]Using an interface method for an object of one data type in an array of a different data type? Java
所以我的问题是我有一个名为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();
}
问题是当我尝试编译时,它给我一个“找不到符号”错误。 它正在GeometricFigure2
类(它是数组类型displaySides()
中寻找displaySides()
。 如何在此设置中正确调用displaySides()
方法?
您有三种选择:
GeometricFigure2
实现您的SidedObject
接口。 SidedObject[]
而不是GeometricFigure2[]
。 SidedObject
: ((SidedObject) geoRef[i]).displaySides();
为了使SideObject
的displaySides()
方法能够与GeometricFigure2
实例一起使用,您需要修改GeometricFigure2
以实现SidedObject
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.