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