class A{
int a;
A(int i){a=i;}
}
class B extends A{
int a,b;
B(int i,int j){
super(i); // 这里修改了父类a的值
b=j;
a=i+j;
}
}
public class AB {
public static void main(String args[]){
A a1=new A(9);
System.out.println(a1.a); 输出是 9
B b=new B(3,5);
System.out.println(a1.a); // 为什么输出还是9,不是应该输出3吗?
}
那创建b时super(i)这个方法里a=i;修改的a是属于谁的?
还有c.a为什么=3呢?对象c的成员变量不是还没被赋值吗?
当然是父类的a了,子类覆盖了父类的变量,所以我说c.a=3;A c=b,赋值了呀,因为属性是静态绑定,方法是动态绑定。