gpt4 book ai didi

java - 帮助第一个多态性类

转载 作者:行者123 更新时间:2023-12-02 12:37:14 26 4
gpt4 key购买 nike

我正在创建一些随机类来更好地理解多态性。编码如下:

Poly1:

public abstract class Poly1 {
int comPoly;
}

SubPoly1:

public class SubPoly1 extends Poly1 {
String testPoly;
}

SubPoly2:

public class SubPoly2 extends Poly1 {
int x;
}

测试聚合物:

public class testPoly {
public static void main(String[] args) {
Poly1[] testObj = new Poly1[2];
testObj[0] = new SubPoly1();
testObj[1] = new SubPoly2();
testObj[1].x = 1;
testObj[1].comPoly = 2;
System.out.println("Test Output : " + testObj[1].x+ " and " + testObj[1].comPoly);
testObj[0].testPoly = "Hello";
testObj[0].comPoly = 8;
System.out.println("Test Output : " + testObj[0].testPoly+ " and " + testObj[1].comPoly);
}
}

但是程序没有通过编译阶段,因为每当我尝试从 SubPoly1SubPoly2< 访问变量时,都会收到 symbol not found 错误(例如 testObj[1].x 将返回错误)。

如有任何帮助,我们将不胜感激。

最佳答案

这是因为您已将 testObj 声明为 Poly1[],而 x 未在 Poly1 中定义,但在 SubPoly2 中。在 Poly1 引用上,您只能访问 comPoly

要解决此问题,您需要将 x 移动到 Poly1 或改用 SubPoly2[] 或转换 Poly1 SubPoly2 的引用(仅当实例实际上SubPoly2 时才可能)。哪一种解决方案最好取决于功能需求。

另请参阅:

关于java - 帮助第一个多态性类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3220098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com