易百教程

90、以下 Java 程序的输出是什么?

class Base   
{  
    public void baseMethod()  
    {  
        System.out.println("BaseMethod called ...");  
    }  
}  
class Derived extends Base   
{  
    public void baseMethod()  
    {  
        System.out.println("Derived method called ...");  
    }  
}  
public class Test   
{  
    public static void main (String args[])  
    {  
        Base b = new Derived();  
        b.baseMethod();  
    }  
}

上面代码输出结果:

Derived method called ...

解释Base 类的方法 baseMethod()Derived 类中被覆盖。 在 Test 类中,引用变量 b(类型为 Base 类)指的是 Derived 类的实例。 在这里,在类 Base 和 Derived 之间实现了运行时多态性。 在编译时,检查 Base 类中方法 baseMethod 的存在,如果存在则程序编译,否则将显示编译器错误。 在这种情况下,baseMethod 存在于 Base 类中; 因此,它编译成功。 但是,在运行时,它会检查 baseMethod 是否已被 Derived 类覆盖,如果是,则调用 Derived 类方法,否则调用 Base 类方法。 在这个示例代码中,Derived 类会覆盖 baseMethod; 因此,调用了 Derived 类方法。