Java中overload和override的區別

來源:互聯網
上載者:User

 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=a.getVal();

System.out.println(x);

}

}

Overload執行個體

package com.guonan;

//Demostrate method voerloading.

class OverloadDemo {

void test(){

System.out.println("NO parameters");

}

void test(int a){

System.out.println("a:"+a);

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

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

}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.