<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    工作小驛

    Ninja!

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks
    override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法并且對其重寫,以求達(dá)到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現(xiàn),在接口中一般只是對方法進(jìn)行了聲明,而我們在實現(xiàn)時,就需要實現(xiàn)接口聲明的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點(diǎn):

    1、覆蓋的方法的標(biāo)志必須要和被覆蓋的方法的標(biāo)志完全匹配,才能達(dá)到覆蓋的效果;

    2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

    3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;

    4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進(jìn)行覆蓋。

    overload對我們來說可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入?yún)?shù)來區(qū)分這些方法,然后再調(diào)用時,VM就會根據(jù)不同的參數(shù)樣式,來選擇合適的方法執(zhí)行。在使用重載要注意以下的幾點(diǎn):

    1、在使用重載時只能通過不同的參數(shù)樣式。例如,不同的參數(shù)類型,不同的參數(shù)個數(shù),不同的參數(shù)順序(當(dāng)然,同一方法內(nèi)的幾個參數(shù)類型必須不一樣,例如可以是fun(int, float), 但是不能為fun(int, int));

    2、不能通過訪問權(quán)限、返回類型、拋出的異常進(jìn)行重載;

    3、方法的異常類型和數(shù)目不會對重載造成影響;

    4、對于繼承來說,如果某一方法在父類中是訪問權(quán)限是priavte,那么就不能在子類對其進(jìn)行重載,如果定義的話,也只是定義了一個新方法,而不會達(dá)到重載的效果。

    下面是對override和overload的測試程序,其中注釋中的內(nèi)容都是會產(chǎn)生編譯錯誤的代碼,我們將注釋去掉,看看在編譯時會產(chǎn)生什么效果。



    // 對overload測試的文件:OverloadTest.java
    public class OverloadTest {
    // 下面幾個方法用來驗證可以通過定義不同的參數(shù)類型和參數(shù)的數(shù)目進(jìn)行方法重載。
    public void fun(){
    System.out.println("method fun in OverloadTest, no parameter");
    }

    public void fun(float f) {
    System.out.println("method fun in OverloadTest, parameter type: float");
    }

    public void fun(int i){
    System.out.println("method fun in OverloadTest, parameter type: int");
    }

    public void fun(int i1, int i2) {
    System.out.println("method fun in OverloadTest, parameter type: int, int");
    }

    // 下面的兩個方法用來驗證可以通過定義不同的參數(shù)順序進(jìn)行方法重載。
    // 需要注意:這里的參數(shù)肯定不是相同的類型,否則的順序的先后就毫無意義。
    public void fun1(int i, float f) {
    System.out.println("method fun1 in OverloadTest,
    sequence of parameters is: int, float");
    }

    public void fun1(float f, int i) {
    System.out.println("method fun1 in OverloadTest,
    sequence of parameters is: float, int");
    }

    // 下面的兩個方法用來驗證方法拋出的異常對于重載的影響.
    // 無論是異常的類型還是異常的個數(shù)都不會對重載造成任何的影響。
    public void fun2() throws TestException {
    System.out.println("fun2 in OverloadTest, exception: TestException");
    }

    public void fun2(int i) throws TestException, TestException1 {
    System.out.println("fun2 in OverloadTest,
    exception: TestException, TestException1");
    }

    public void fun2(float f) throws Exception {
    System.out.println("fun2 in OverloadTest, exception: Exception");
    }

    // 不能通過拋出的異常類型來重載fun方法。
    //public void fun(int i) throws Exception {
    // System.out.println("method fun in OverloadTest,
    parameter type: int, exception: Exception");
    //}

    // 不能通過返回值重載fun方法。
    //public boolean fun(int i) throws Exception {
    // System.out.println("method fun in OverloadTest,
    parameter type: int, exception: Exception, return: boolean");
    // return true;
    //}

    private void fun3() { }

    // 不能通過不同的訪問權(quán)限進(jìn)行重載
    public void fun3() { }

    public static void main(String[] args) {
    // 這里只是定義了OverloadTest的實例,所以test不會調(diào)用
    // OverloadTest1中的方法。
    OverloadTest test = new OverloadTest1();
    // 這里定義了OverloadTest1的實例,因為OverloadTest1是OverloadTest
    // 的子類,所以test1會調(diào)用OverloadTest中的方法。
    OverloadTest1 test1 = new OverloadTest1();

    try {
    int i = 1, j = 2, m = 3;

    // 這里不會調(diào)用OverloadTest1的fun方法
    // test.fun(i, m, j);
    test1.fun(i, j, m);
    test1.fun();
    // 這個調(diào)用不會執(zhí)行,因為fun3()在OverloadTest中訪問權(quán)限是priavte
    //test1.fun3();
    test1.fun3(i);
    } catch(Exception e) { }
    }
    }
    posted on 2007-09-18 14:49 王君 閱讀(304) 評論(0)  編輯  收藏 所屬分類: J2SE
    主站蜘蛛池模板: 免费爱爱的视频太爽了| 搜日本一区二区三区免费高清视频| 任你躁在线精品免费| 亚洲 小说区 图片区 都市| 国产成人精品日本亚洲专| 中文毛片无遮挡高潮免费| 久久久久亚洲av无码专区导航| 国产精品成人啪精品视频免费| 婷婷综合缴情亚洲狠狠尤物| 亚洲av成人一区二区三区观看在线| 在线视频精品免费| 亚洲日本乱码卡2卡3卡新区| 最近最新MV在线观看免费高清| 成人免费av一区二区三区| 亚洲欧洲精品无码AV| 野花香高清视频在线观看免费| 久久精品夜色国产亚洲av| 免费视频成人片在线观看| 亚洲AⅤ无码一区二区三区在线 | 亚洲开心婷婷中文字幕| h在线看免费视频网站男男| 亚洲精品国产综合久久一线| 成人久久免费网站| 亚洲制服丝袜第一页| 免费国内精品久久久久影院| 精品97国产免费人成视频| 亚洲精品免费在线视频| 国产精品自在自线免费观看| 美女无遮挡拍拍拍免费视频| 亚洲网红精品大秀在线观看| 日韩在线免费电影| 日韩插啊免费视频在线观看 | 亚洲福利视频一区二区| 中文字幕视频免费| 日日摸夜夜添夜夜免费视频| 亚洲欧洲自拍拍偷综合| 深夜国产福利99亚洲视频| 免费三级毛片电影片| 中文毛片无遮挡高清免费| 亚洲精品女同中文字幕| 亚洲高清资源在线观看|