本来是做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去访问被覆盖的属性的话不会动态绑定的
------解决方案--------------------------------------------------------
只有方法才有重写一说,变量没有