多态新解
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");
}
}
class Test01
{
public static void main(String[] args)
{
Base base = new Son();
base.method();
base.methodB();
}
}
这是一个普通的代码,因为觉得很有意思,就分享给大家,请问大家以上的代码可以运行吗?如果运行了会出现什么结果?
相信大家也可以看出来,就是会产生编译错误,其中base.methodB();
会报一个编译错误,提示不能找到方法methodB();那为什么会这样呢,明明是Base base = new Son();
应该是可以调用Son中的method方法啊?但是事实就是,不能调用。
因为base 是Base类,虽然它是Son类的对象,但是并不能调用Base类中没有的方法,也就是说只能调用子类里从父类继承下来的方法,所以结果就是base.method();
输出的结论是Son
有这么一句话,对于多态类型,只需要记住:编译看左,运行看右;