override和Java overload的定義及異同點(diǎn)分析
方法的重寫(xiě)(Overriding)和重載(Overloading)是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)(Overriding)是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),而重載(Overloading)是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。
如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被"屏蔽"了。
如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型或有不同的參數(shù)次序,則稱(chēng)為方法的重載(Overloading)。不能通過(guò)訪(fǎng)問(wèn)權(quán)限、返回類(lèi)型、拋出的異常進(jìn)行重載.
1.方法重載(overload)
概念:簡(jiǎn)單的說(shuō):方法重載就是類(lèi)的同一種功能的多種實(shí)現(xiàn)方式,到底采用哪種方式,取決于調(diào)用者給出的參數(shù)。
注意事項(xiàng):
。1)方法名相同
(2)方法的參數(shù)類(lèi)型、個(gè)數(shù)、順序不至少有一項(xiàng)不同
。3)方法返回類(lèi)型可以不同
(4)方法的修飾符可以不同
如果只是返回類(lèi)型不一樣,不能夠構(gòu)成重載
如果只是控制訪(fǎng)問(wèn)修飾符號(hào)不一樣,也是不能構(gòu)成重載的
Overloaded的方法是可以改變返回值的類(lèi)型。
2.方法覆蓋(override)
概念:簡(jiǎn)單的說(shuō):方法覆蓋就是子類(lèi)有一個(gè)方法,和父類(lèi)的某個(gè)方法的名稱(chēng)、返回類(lèi)型、參數(shù)一樣,那么我們就說(shuō)子類(lèi)的這個(gè)方法覆蓋了父類(lèi)的那個(gè)方法。
注意事項(xiàng):方法覆蓋有很多條件,總的講有兩點(diǎn)一定要注意:
(1)子類(lèi)的方法的返回類(lèi)型,參數(shù),方法名稱(chēng),要和父類(lèi)方法的返回類(lèi)型,參數(shù),方法名稱(chēng)完全一樣,否則編譯出錯(cuò)。
。2) 子類(lèi)方法不能縮小父類(lèi)方法的訪(fǎng)問(wèn)權(quán)限(反過(guò)來(lái)是可以的)
例:
Overrride實(shí)例
復(fù)制代碼 代碼如下:
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;/pic/p>
int x=a.getVal();
System.out.println(x);
}
}
Overload實(shí)例
package com.guonan;
/pic/p>
class OverloadDemo {
void test(){
System.out.println("NO parameters");
}
void test(int a){
System.out.println("a:"+a);
}/pic/p>
void test(int a, int b){
System.out.println("a and b:"+a+" "+b);
}
double test(double a){
System.out.println("double a:"+a);
return a*a;
}
}
class Overload{
public static void main(String[] args) {
OverloadDemo ob = new OverloadDemo();
double result;
ob.test();
ob.test(10);
ob.test(10, 20);
result = ob.test(123.25);
System.out.println("Result of ob.test(123.25):"+result);
}
}
【override和Java overload的定義及異同點(diǎn)分析】相關(guān)文章:
Java數(shù)組的定義和使用11-03
Java和.NET開(kāi)發(fā)語(yǔ)言的不同點(diǎn)11-01
Java多線(xiàn)程的定義狀態(tài)和屬性12-25
Java“異或” 運(yùn)算符12-09
Java類(lèi)的定義和聲明03-03
Java中定義與聲明的區(qū)別10-31
Java語(yǔ)言中接口的定義及實(shí)現(xiàn)10-05
java中定義常量的方法及介紹03-17