當前位置:才華齋>計算機>java語言>

override和Java overload的定義及異同點分析

java語言 閱讀(2.46W)

方法的重寫(Overriding)和過載(Overloading)是Java多型性的不同表現。重寫(Overriding)是父類與子類之間多型性的一種表現,而過載(Overloading)是一個類中多型性的一種表現。

override和Java overload的定義及異同點分析

如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被"遮蔽"了。

如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別或有不同的引數次序,則稱為方法的過載(Overloading)。不能通過訪問許可權、返回型別、丟擲的異常進行過載.

1.方法過載(overload)

概念:簡單的說:方法過載就是類的同一種功能的.多種實現方式,到底採用哪種方式,取決於呼叫者給出的引數。

注意事項:

(1)方法名相同

(2)方法的引數型別、個數、順序不至少有一項不同

(3)方法返回型別可以不同

(4)方法的修飾符可以不同

如果只是返回型別不一樣,不能夠構成過載

如果只是控制訪問修飾符號不一樣,也是不能構成過載的

Overloaded的方法是可以改變返回值的型別。

2.方法覆蓋(override)

概念:簡單的說:方法覆蓋就是子類有一個方法,和父類的某個方法的名稱、返回型別、引數一樣,那麼我們就說子類的這個方法覆蓋了父類的那個方法。

注意事項:方法覆蓋有很多條件,總的講有兩點一定要注意:

(1)子類的方法的返回型別,引數,方法名稱,要和父類方法的返回型別,引數,方法名稱完全一樣,否則編譯出錯。

(2) 子類方法不能縮小父類方法的訪問許可權(反過來是可以的)

例:

Overrride例項

複製程式碼 程式碼如下:

class A{

public int getVal(){

return(5);

}

}

class B extends A{

public int getVal(){

return(10);

}

}

public class override {

public static void main(String[] args) {

B b = new B();

A a= (A)b;//把 b 強 制轉換成A的型別

int x=al();

tln(x);

}

}

Overload例項

package an;

//Demostrate method voerloading.

class OverloadDemo {

void test(){

tln("NO parameters");

}

void test(int a){

tln("a:"+a);

}//end of Overload test for one integer parameter.

void test(int a, int b){

tln("a and b:"+a+" "+b);

}

double test(double a){

tln("double a:"+a);

return a*a;

}

}

class Overload{

public static void main(String[] args) {

OverloadDemo ob = new OverloadDemo();

double result;

();

(10);

(10, 20);

result = (123.25);

tln("Result of (123.25):"+result);

}

}