我目前正在学习继承,但在理解该概念时遇到了一些麻烦。对于以下代码,有人可以告诉我为什么我不能声明超类类型的子类吗?
public class Test{
public static void main(String[] args){
Superclass myA = new Superclass();
Superclass myB = new Subclass();
}
public class Superclass{
private string a;
public Superclass()
{
a="";
}
public void setA(String userA)
{
a = userA;
}
}
public class Subclass extends Superclass{
private String b;
public Subclass()
{
b = "";
}
public void setB(String userB)
{
b = userB;
}
public void display()
{
System.out.print(b)
}
}
myA不会给我任何问题,但是myB可以。我想做一个让我们说超类的数组,但是我想能够使用Subclass。
Superclass[] X = new Superclass[2];
x[0] = new Subclass();
X[0].setB("hello");
X[0].display();
您正在将子类对象分配给超类类型变量(即,完成了转换),这很好。但是当您这样做时,只能访问超类方法。因此,为了访问子类方法,请向下转换到其子类类型。例如。
Superclass[] X = new Superclass[2];
X[0] = new Subclass();
((Subclass) X[0]).setB("hello");
((Subclass) X[0]).display();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句