一个新手问题。。搜索了好久没找到答案。。。
public class Fighter {
public int role=5;
}
一个类继承了它
public class Card extends Fighter {
public Card(){
role=3;
System.out.println(super.role);//为何这句话输出的是3而不是5??
}
子类构造函数中对role进行操作,然后输出语句为何输出的是3而不是5?
public class Card extends Fighter {
public int role;
public Card(){
role=3;
System.out.println(super.role);//输出5
}
为何覆盖了role属性之后 输出就正确了。
------解决思路----------------------
我现在看到新帐号并且还是qqXXXX的就怕了,,,直觉告诉我不会结贴
子类继承父类后,就拥有了父类所有成员,当子类中没有和父类同名的属性时,this.role还是super.role 都是一个东西。
属性不能被重写也不能被覆盖,不过这也是相对的。 当子类中有和父类中同名的属性时,this.role调用本类的role属性,super.role调用父类的role属性。