成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談Overload和Override的區別

開發 后端
如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。本文介紹的是Overload和Override的區別。

Overload是重載的意思,Override是覆蓋的意思,也就是重寫。

重載Overload表示同一個類中可以有多個名稱相同的方法,但這些方法的參數列表各不相同(即參數個數或類型不同)。

重寫Override表示子類中的方法可以與父類中的某個方法的名稱和參數完全相同,通過子類創建的實例對象調用這個方法時,將調用子類中的定義方法,這相當于把父類中定義的那個完全相同的方法給覆蓋了,這也是面向對象編程的多態性的一種表現。

子類覆蓋父類的方法時,只能比父類拋出更少的異常,或者是拋出父類拋出的異常的子異常,因為子類可以解決父類的一些問題,不能比父類有更多的問題。子類方法的訪問權限只能比父類的更大,不能更小。如果父類的方法是private類型,那么,子類則不存在覆蓋的限制,相當于子類中增加了一個全新的方法。

至于Overloaded的方法是否可以改變返回值的類型這個問題,要看你倒底想問什么呢?這個題目很模糊。如果幾個Overloaded的方法的參數列表不一樣,它們的返回者類型當然也可以不一樣。

但我估計你想問的問題是:如果兩個方法的參數列表完全一樣,是否可以讓它們的返回值不同來實現重載Overload。這是不行的,我們可以用反證法來說明這個問題,因為我們有時候調用一個方法時也可以不定義返回結果變量,即不要關心其返回結果,例如,我們調用map.remove(key)方法時,雖然remove方法有返回值,但是我們通常都不會定義接收返回結果的變量,這時候假設該類中有兩個名稱和參數列表完全相同的方法,僅僅是返回類型不同,java就無法確定編程者倒底是想調用哪個方法了,因為它無法通過返回結果類型來判斷。

override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法并且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現,在接口中一般只是對方法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:

1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;

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

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

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

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

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

2、不能通過訪問權限、返回類型、拋出的異常進行重載;

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

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

總之,重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。很重要的一點就是,Overloaded的方法是可以改變返回值的類型。希望對你有幫助。

原文地址:http://www.it315.org/programjava/70.htm

 

進一步閱讀:C# override和overload經驗總結

【編輯推薦】

  1. JAVA技巧心得 學Java切忌浮躁
  2. 菜鳥入門 java語言學習六大要點
  3. JAVA虛擬機內存分配與回收機制
  4. 淺談Java的volatile
  5. Javascript閉包(closure) 深入淺出
責任編輯:于鐵 來源: 程序員網校
相關推薦

2009-08-27 11:21:36

C# override

2011-05-13 15:23:37

聲明定義

2021-06-10 18:59:41

Java編程語言

2011-05-07 14:15:39

工作站PC

2009-08-28 15:28:22

C# overridenew隱藏

2011-04-21 15:26:46

噴墨打印

2009-08-27 10:54:09

C# const和st

2022-01-11 06:53:23

面試重寫重載

2009-06-18 15:45:55

J2ee筆試

2009-08-21 14:22:22

C# new和over

2011-06-28 10:55:20

C#接口抽象類

2009-08-26 14:54:23

C# new和over

2014-07-24 10:00:21

2013-01-08 15:11:19

OpenStackKVM

2010-05-13 17:00:50

Subversion安

2013-09-11 09:49:18

Java數組集合

2024-04-29 07:48:04

C++FinalOverride

2020-02-13 10:14:11

MySQL事務ACID

2009-07-17 17:49:39

JRuby學習

2011-03-25 10:25:30

同步方法同步代碼塊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区2区 | 天天操夜夜操免费视频 | 黄a网| 99亚洲精品 | 免费成人国产 | 国产高清精品一区 | 在线日韩不卡 | 国产一区二区高清在线 | 91九色婷婷 | 逼逼视频 | 91精品国产高清一区二区三区 | 国产a级黄色录像 | 中文字幕高清 | 91精品国产综合久久久动漫日韩 | 精品国产乱码久久久久久丨区2区 | 国产一区二区久久 | 久久91 | 自拍偷拍亚洲视频 | 国产在线成人 | 久久草在线视频 | 亚洲综合久久网 | 日韩精品色网 | 精品国产乱码久久久久久老虎 | 毛片网站在线观看 | 精品免费国产视频 | 91欧美激情一区二区三区成人 | 91精品国产一区二区三区 | 国产精品免费在线 | 亚洲精品成人av | 精品1区| 一区二区三区在线播放 | 黄色国产在线视频 | 毛片免费看的 | 欧美日韩精品 | 性网站免费 | 国产精品美女久久久久久久久久久 | 国产亚洲精品精品国产亚洲综合 | 国产乱码久久久 | 国产成人区 | 亚洲播放一区 | 成人午夜视频在线观看 |