帮助第一个Polymorphism类

Moo*_*ors 2 java polymorphism

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

Poly1:

public abstract class Poly1 {
    int comPoly;
}
Run Code Online (Sandbox Code Playgroud)

SubPoly1:

public class SubPoly1 extends Poly1 {
    String testPoly;
}
Run Code Online (Sandbox Code Playgroud)

SubPoly2:

public class SubPoly2 extends Poly1 {
    int x;
}
Run Code Online (Sandbox Code Playgroud)

testPoly:

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);
   }
}
Run Code Online (Sandbox Code Playgroud)

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

任何帮助,将不胜感激.

Bal*_*usC 5

那是因为你已经声明testObjPoly1[]x某些时候没有被定义Poly1,而是在SubPoly2.在Poly1参考上,您只能访问comPoly.

为了解决这个问题,你需要移动xPoly1或使用SubPoly2[]替代或投下Poly1引用SubPoly2(这是唯一可能当实例实际上是一个SubPoly2).哪一种最佳解决方案取决于功能要求.

也可以看看: