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

子类变量覆盖父类变量,子类调用父类方法的问题
有那么个父类和子类:

Base.java:
--------------
Java code

public class Base {
    public String str = "base";
    
    public void print() {
        System.out.println(str);
    }
}



Sub.java:
---------------
Java code

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"的 .......

子类不是应该覆盖父类的同名属性吗?

------解决方案--------------------
属性,没有多态一说。只有方法才有override,才有覆盖,才有重写,才有多态
------解决方案--------------------
属性的引用不存在多态
------解决方案--------------------
Java code

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