多态

2017-03-10  本文已影响0人  五月的约修亚

类型

例子

public class Test {
    static public void main(String [] args){
        A b = new B();
        b.sayHello();
        b.funForB();
        //如果就想用b调用funForB怎么做
    }
}

class A{
    public void sayHello(){
        System.out.println("Hi Im A");
    }
}

class B extends A{
    public void sayHello(){
        System.out.println("Hi Im B");
    }
    public void funForB(){
        System.out.println("function for B");
    }
}

理解

当使用多态方式调用方法时,首先检查父类中是否有该方法,==如果没有,则编译错误==;
如果有,再去检查子类中是否存在同名方法,若存在则调用子类的同名方法,否则调用当前类的方法。
注意:static方法、final方法、private方法和构造器属于特殊情况,如果调用这些方法则编译器可以准确的知道应该调用哪个方法,这种方式叫做静态绑定。
static方法只能继承,不能重写Override,如果子类中定义了同名同形式的静态方法,它对父类方法只起到隐藏的作用。调用的时候用谁的引用,则调用谁的版本。
final方法不能被重写

上一篇下一篇

猜你喜欢

热点阅读