行中发生了什么: Sup supref;
是一种变量吗? 需要的简要说明请。
是ref关键字?在我的教科书中出现没有任何解释之前,我从来没有见过这个。非常感谢。
整个代码:
class Sup {
void who() {
System.out.println("who() in Sup");
}
}
class Sub1 extends Sup {
void who() {
System.out.println("who() in Sub1");
}
}
class Sub2 extends Sup {
void who() {
System.out.println("who() in Sub2");
}
}
public class DynDispDemo {
public static void main(String[] args) {
Sup superOb = new Sup();
Sub1 subOb1 = new Sub1();
Sub2 subOb2 = new Sub2();
Sup supref;
supref = superOb;
supref.who();
supref = subOb1;
supref.who();
supref = subOb2;
supref.who();
}
}
答案 0 :(得分:4)
Sup supref;
表示supref
是Sup
类型的变量。 supref
可以引用类Sup
或其任何子类的任何对象。
答案 1 :(得分:1)
Sup supref;
这一行声明了一个变量,其名称为supref
,类型为Sup
,未初始化(它实际上没有引用任何内容)。
此变量能够保存对类型为Sup
的对象或其任何子类的引用,但在使用new
或其他任务进行初始化之前不能用于执行任何操作操作,例如supref = superOb;
,用于指定superOb
指向的引用,类型为Sup
。
您的示例中的以下代码说明了多态性,因为从不同类型的对象中对supref
进行了分配,并在这些对象上调用who()
方法。
您可以使用单个变量来保存对某些超类型的引用,而不关心子类类型,并使用定义的接口来获得正确的功能。
答案 2 :(得分:0)
supref是Sup类型的变量。它在Java中也称为引用变量。由于'Sup'是Sub1和Sub2的父类,这意味着Sub1和Sub2也是Sup类型。这意味着,Sup类型的任何引用变量都可以用于引用Sup类型的对象,在这种情况下,它用于保存Sub1和Sub2的引用。