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



行中发生了什么:Sup supref;

这是一种变量吗?请简要说明需要。

参考是关键字吗?我从来没有见过这个,它只是出现在我的教科书中没有解释。非常感谢。

整个代码:

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();
}
}
Sup supref;

表示suprefSup 类型的变量。 supref可以引用类 Sup 的任何对象或其任何子类。

Sup supref;

这一行声明了一个变量,其名称是supref,类型为Sup,没有初始化(它基本上不引用任何内容)。

这个变量能够保存对类型Sup的对象或其任何子类的引用,但在使用它之前不能用于做任何事情,直到它被new初始化,或者通过一些其他赋值操作,如supref = superOb;,它分配由superOb指向的引用,这也是Sup类型

示例中的以下代码说明了多态性,因为要从不同类型的对象进行supref并对这些对象调用 who() 方法进行赋值。

您可以使用单个变量来保存对某个超类型的引用,而不关心子类类型,并使用定义的接口来获取正确的功能。

> supref 是 Sup 类型的变量。它在 Java 中也称为引用变量。由于"Sup"是Sub1和Sub2的父类,这意味着Sub1和Sub2也是Sup类型。这意味着,任何 Sup 类型的引用变量都可用于引用 Sup 类型的对象,在本例中,该对象用于保存 Sub1 和 Sub2 的引用。

最新更新