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