有那么个父类和子类:Base.java:
--------------public class Base {
public String str = "base";
public void print() {
System.out.println(str);
}
}
Sub.java:
---------------public class Sub extends Base {
public String str = "sub";
public void myPrint() {
super.print();
}
}Test.java:
---------------
public class Test {
public static void main(String[] args) {
Sub sub = new Sub();
sub.myPrint(); //这里输出"base",我是希望输出"sub"的 .......子类不是应该覆盖父类的同名属性吗?
--------------public class Base {
public String str = "base";
public void print() {
System.out.println(str);
}
}
Sub.java:
---------------public class Sub extends Base {
public String str = "sub";
public void myPrint() {
super.print();
}
}Test.java:
---------------
public class Test {
public static void main(String[] args) {
Sub sub = new Sub();
sub.myPrint(); //这里输出"base",我是希望输出"sub"的 .......子类不是应该覆盖父类的同名属性吗?
酱紫,看来我必须在父类价格方法,比如:public void setStr(String str); 然后再子类里调用?public class Base {
private String str = "base";
public void print() {
System.out.println(str);
}
public void setStr(String str) {
this.str = str;
}
}public class Sub extends Base {
public String str = "sub";
public void myPrint() {
super.print();
}
}public class Test {
public static void main(String[] args) {
Sub sub = new Sub();
sub.setStr(sub.str);
sub.myPrint();这样子怎么样?
public class Base {
public String str = "base";
public void print() {
System.out.println(getStr());
}
public String getStr() {
return str;
}
}public class Sub extends Base {
public String str = "sub";
public void myPrint() {
super.print();
}
public String getStr() {
return str;
}
}