问这个程序的输出结果?
package Wangyi;
class Base
{
public void method()
{
System.out.println("Base");
}
}
class Son extends Base
{
public void method()
{
System.out.println("Son");
}
public void methodB()
{
System.out.println("SonB");
}
}
public class Test01
{
public static void main(String[] args)
{
Base base = new Son();
base.method();
base.methodB();
}
}
答案:
编译不通过
解析:
Base base = new Son();
这句new 了一个派生类,赋值给基类,所以下面的操作编译器认为base对象就是Base类型的。Base类中不存在methodB()方法,所以编译不通过。
多态问题中,无论向上或向下转型,只需记住一句话:
**编译看左边,运行看右边。**意思编译时候,看左边有没有该方法,运行的时候结果看 new 的对象是谁,就调用的谁。
博客探讨了Java中多态性的概念,通过一个具体的代码示例展示了如何创建基类对象并调用派生类的方法。由于编译时类型检查,`Basebase=new Son();`导致`base.methodB();`在编译时不通过,强调了“编译看左边,运行看右边”的原则。
856

被折叠的 条评论
为什么被折叠?



