java - 对不同数据类型数组中一种数据类型的对象使用接口(interface)方法? java

标签 java arrays inheritance interface

所以我的问题是我有一个名为 GeometricFigure2 的类,它包含 widthheight 等字段。我有一个名为 SidedObject 的接口(interface),它包含一个显示图形有多少条边的方法

public interface SidedObject
{
    public void displaySides();
}

我有两个名为 Square2Triangle2 的子类,它们扩展了 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() 方法?

最佳答案

您有三个选择:

  1. GeometricFigure2 实现您的 SidedObject 接口(interface)。
  2. 将数组声明为 SidedObject[] 类型,而不是 GeometricFigure2[]
  3. 将数组变量转换为 SidedObject:
    ((SidedObject) geoRef[i]).displaySides();

关于java - 对不同数据类型数组中一种数据类型的对象使用接口(interface)方法? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899785/

相关文章:

java - LinearLayout - 在 TextView 之后添加 TableLayout

聚合子类中的Java构造函数

C++ : Accessing private member of base or global variable from a derived class

c++ - while循环继续运行

jquery - 使用 Jquery 创建数组

c++ - 有没有办法在运行时获取 C++ 中的基类名称?

java - OOP的缺点?

java - 如何切换字符串中的字母

java - 具有自定义比较器的 TreeMap 不会删除条目

c# - 反序列化时字节数组大小错误