java重寫與重載的區別和注意事項

來源:互聯網
上載者:User

QUESTION NO: 3
1. class A {
2. protected int method1(int a, int b) { return 0; }
3. }
Which two are valid in a class that extends class A? (Choose two)
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }

310-035中的題目,標準答案是A,C

 

A不是重載,A是重寫!也就是覆蓋!
覆蓋不能降低原方法的"可見度"

class A {
    protected int method1(int a, int b) { return 0; }
}

class B extends A {
    public int method1(int a, int b) { return 0; }
}

那麼B中只有一個method1(int,int)方法!

--------------------------------------------
重載是:
當多個方法具有相同的名字而含有不同的參數時產生
那麼對參數不同的調用,實際調用不同的方法
也可以理解為實際上有兩個方法,名字同,參數不同!

class A {
    protected int method1(int a, int b) { return 0; }
}

class B extends A {
    private int method1(int a, long b) { return 0; }
}
那麼B有method1(int,int)和method1(int,long)兩個方法!

因為"是"兩個方法,所以其實
class B extends A {
    PUBLIC int method1(int a, long b) { return 0; }
}
也是正確的

-------------------------------------------------------------------------

-------------

注意事項:

覆蓋(不知道是不是OVERWRITE)注意
不能降低原方法的"可見度"

重載(不只道是不是OVERLOAD)注意
只有參數不同才能構成重載,"可見度",傳回型別不同都不能構成方法的重載

重載不是:
重新寫(載)

重載是:
多重(可能)載入 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.