日期:2014-05-20  浏览次数:20807 次

子类如何重写父类变量
本来是做c#.net的,对java略知皮毛而已,有个基础问题弄不明白

java子类如何重写父类变量

Java code

class ParentClass {
  public String AAA = "111";

  public void say(){
    System.out.println(AAA);
  }
}

class SubClass {
  public String AAA = "777";
}

class TestClass {
  public void main(){
    SubClass sub = new SubClass();
    sub.say();
  }
}



大概是这样吧。TestClass里输出的貌似是“111”吧,我希望的是子类能覆盖父类,

子类重写AAA,new子类,输出的是子类重写的内容

------解决方案--------------------
class SubClass extends ParentClass {
public SubClass() {
super.AAA = "777";
}
}
------解决方案--------------------
Java code
class ParentClass
{
    private String AAA = "111";
    public void setAAA(String s){
        AAA = s;
    }
    public void say(){
        System.out.println(AAA);
    }
}
class SubClass extends ParentClass {

}

class TestClass {
    public static void main(final String[] args){
        SubClass sub = new SubClass();
        sub.setAAA("777");
        sub.say();
    }
}

------解决方案--------------------
这个因为是通过父类方法say去访问被覆盖的属性的话不会动态绑定的
------解决方案--------------------
只有方法才有重写一说,变量没有