【发布时间】:2021-03-01 21:14:38
【问题描述】:
我对 Java 还很陌生。我正在做一个作业,我有一个超类和几个子类,其中一些子类具有其他子类没有的属性。本质上,我必须创建一个 SuperClass 对象数组,然后用其中一个子类初始化数组的每个元素。
但是,当我尝试使用其中一个子类的特定方法时,我收到一个编译错误,告诉我在 SuperClass.getY() /strong>,当它被明确定义为来自 SuperClass 的方法时。 我将问题归结为以下代码(确保我仍然得到相同的错误):
public class StackOverFlow {
public static void main(String[] args) {
/*
SubClass obj = new SubClass(4, 5);
System.out.println(obj.getX());
System.out.println(obj.getY());
*/
SuperClass[] arr;
arr = new SuperClass[5];
arr[0] = new SubClass(5, 10);
System.out.println(arr[0].getX());
System.out.println(arr[0].getY());
}}
public class SuperClass {
private int x;
public SuperClass(int x){
this.x = x;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}}
public class SubClass extends SuperClass{
private int y;
public SubClass(int x, int y){
super(x);
this.y = y;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}}
当我使用注释的代码时,我没有收到错误,这可能意味着错误来自不正确地使用类数组。 谁能帮帮我?
【问题讨论】:
-
arr包含SuperClass的实例,并且该类没有方法getY -
您不能在更通用的超类上使用子类特定的方法。如果您想解决它,请查看强制转换和 instanceof 的使用
标签: java arrays oop subclass superclass