继承成员变量和方法的区别

2017-03-22  本文已影响24人  李霖神谷

几乎所有的java书籍或资料多会说当子类继承父类时,子类会继承父类中定义的成员变量和方法,,在访问权限通过的情况下,子类可以直接访问父类的成员变量和方法,这种说法是比较笼统的,因为java成员变量和方法的继承是有区别。

class Base{
    int count =2;
    public void play(){
        System.out.println(this.count);
    }
}
class Derived extends Base{
    int count=20;
    public void play(){
        System.out.println(this.count);
    }
}
public class BianDemo{
    public static void main(String[] args) {
        Base b=new Base();
        System.out.println(b.count);
        b.play();
        Derived d=new Derived();
        System.out.println(d.count);
        d.play();
        Base bd=new Derived();
        System.out.println(bd.count);
        bd.play();
    }
}

创建b,d对象不需要过多解释,创建bd对象,是向上转型,直接通过bd访问count变量输出的将是Base(声明类型)对象count的实例变量,如果通过bd访问play方法,将表现出Derived(运行时类型)对象的行为方式。

上一篇 下一篇

猜你喜欢

热点阅读