Java多态性:动态方法调度(需要一个liitle帮助)

时间:2015-06-16 19:27:49

标签: java

行中发生了什么: 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();
}

}

3 个答案:

答案 0 :(得分:4)

Sup supref;

表示suprefSup类型的变量。 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的引用。