10. Override和Overload的含義與區別。
阿新 • • 發佈:2019-01-26
Override(重寫,執行時多型):
是子類對容許訪問父類的方法進行新的編寫的稱呼。其中方法名和形參不能發生改變;即外殼不變,內容可以發生改變。
優點:子類可以根據實際需要,定義特定於自己的行為。也就是說子類能夠實際根據需要實現父類的方法。
class
Animal{
public
void
move(){
System.out.println( "動物可以移動" );
}
}
class
Dog extends
Animal{
public
void
move(){
System.out.println( "狗可以跑和走" );
}
}
public
class
TestDog{
public
static
void
main(String args[]){
Animal
a = new
Animal(); //
Animal 物件
Animal
b = new
Dog(); //
Dog 物件
a.move(); //
執行 Animal 類的方法
b.move(); //執行
Dog 類的方法
}
}
|
以上例項編譯執行結果如下:
1 2 |
動物可以移動
狗可以跑和走
|
在上面的例子中可以看到,儘管b屬於Animal型別,但是它執行的是Dog類的move方法。
這是由於在編譯階段,只是檢查引數的引用型別。
然而在執行時,Java虛擬機器(JVM)指定物件的型別並且執行該物件的方法。
因此在上面的例子中,之所以能編譯成功,是因為Animal類中存在move方法,然而執行時,執行的是特定物件的方法。
思考以下例子:
1
2
3
4
5
6
7
8 |