java中什么叫覆蓋Override?



馬克-to-win:方法的覆蓋(Override)是指子類重寫從父類繼承來的一個(gè)同名方法(參數(shù)、返回值也同)。
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。



例1.5.1

class AAAMark_to_win {
    double f(double x, double y) {
        return x * y;
    }
}

class BBB extends AAAMark_to_win {
    double f(double x, double yMark_to_win)
/*注意這里的返回值必須為double,如返回int值,
我試過報(bào)錯(cuò),因?yàn)閟un公司不出這個(gè)語法,他沒法辦,
到時(shí)obj.f(4,6)不知道調(diào)用基類還是本類的方法。
*/
    {
        return x + yMark_to_win;
    }
}

public class Test {
    public static void main(String args[]) {
        AAAMark_to_win a = new AAAMark_to_win();
        System.out.println(a.f(4, 6));
        BBB obj = new BBB();
        System.out.println(obj.f(4, 6));
    }
}

result is:
24.0
10.0




例1.5.2---本章源碼 

class AAAMark_to_win {
    double f(double x, double yMark_to_win) {
        return x * yMark_to_win;
    }
}

class BBB extends AAAMark_to_win {
    double f(double x, double y) {
        return x + y;
    }
}

public class Test {
    public static void main(String args[]) {
        AAAMark_to_win a = new AAAMark_to_win();
        System.out.println(a.f(4, 6));
        BBB obj = new BBB();
        System.out.println(obj.f(4, 6));
/* 基類指針指向子類或說派生類效果就像子類指針指是一樣的,為什么?馬克-to-win:因?yàn)閚ew BBB();時(shí),BBB的屬性的內(nèi)存空間也被開辟了。只是語法上允許“基類指針指向派生類”
*/     
        AAAMark_to_win obj1 = new BBB();
        System.out.println(obj1.f(4, 6));
    }

}

結(jié)果是: 

24.0
10.0
10.0




例1.5.2.a:本例編譯報(bào)錯(cuò):overide時(shí), 子類的方法的visibility不能更小,起碼要大或相等。
class AAAMark_to_win {
    public double f(double x, double yMark_to_win) {
        return x * yMark_to_win;
    }
}

class BBB extends AAAMark_to_win {
    double f(double x, double y) {
        return x + y;
    }
}

public class Test {
    public static void main(String args[]) {
        AAAMark_to_win a = new AAAMark_to_win();
        System.out.println(a.f(4, 6));
        BBB obj = new BBB();
        System.out.println(obj.f(4, 6));
/* 基類指針指向子類或說派生類效果就像子類指針指是一樣的,為什么?馬克-to-win:因?yàn)閚ew BBB();時(shí),BBB的屬性的內(nèi)存空間也被開辟了。只是語法上允許“基類指針指向派生類”
*/    
        AAAMark_to_win obj1 = new BBB();
        System.out.println(obj1.f(4, 6));
    }

}