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

几乎所有的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(运行时类型)对象的行为方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容