有那么个父类和子类: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"的                  .......子类不是应该覆盖父类的同名属性吗?

解决方案 »

  1.   

    那就把子类的实现也改成System.out.println(str);
      

  2.   

    属性,没有多态一说。只有方法才有override,才有覆盖,才有重写,才有多态
      

  3.   


    酱紫,看来我必须在父类价格方法,比如: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();这样子怎么样?
      

  4.   


    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;
    }
    }