Java中overload和override的區別

   方法重載(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);

    }

    }

   方法重載(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);

    }

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章