1. 程式人生 > >Override和Overload的含義去區別

Override和Overload的含義去區別

最近看了一下關於java的基礎知識,對此作了一下蒐集整理: 

java中的繼承,方法覆蓋(重寫)override與方法的過載overload的區別 

方法的重寫(Overriding)和過載(Overloading)是Java多型性的不同表現。   
重寫(Overriding)是父類與子類之間多型性的一種表現,而過載(Overloading)是一個類中多型性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding) 。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被"遮蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別或有不同的引數次序,則稱為方法的過載(Overloading)。不能通過訪問許可權、返回型別、丟擲的異常進行過載。 

1. Override 特點   
1、覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果;   
2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;   
3、覆蓋的方法所丟擲的異常必須和被覆蓋方法的所丟擲的異常一致,或者是其子類; 
4、方法被定義為final不能被重寫。  
5、對於繼承來說,如果某一方法在父類中是訪問許可權是private,那麼就不能在子類對其進行重寫覆蓋,如果定義的話,也只是定義了一個新方法,而不會達到重寫覆蓋的效果。(通常存在於父類和子類之間。) 

2.Overload 特點   
1、在使用過載時只能通過不同的引數樣式。例如,不同的引數型別,不同的引數個數,不同的引數順序(當然,同一方法內的幾個引數型別必須不一樣,例如可以是fun(int, float), 但是不能為fun(int, int));   
2、不能通過訪問許可權、返回型別、丟擲的異常進行過載;   
3、方法的異常型別和數目不會對過載造成影響;   
4、過載事件通常發生在同一個類中,不同方法之間的現象。 
5、存在於同一類中,但是隻有虛方法和抽象方法才能被覆寫。 

其具體實現機制: 

overload是過載,過載是一種引數多型機制,即程式碼通過引數的型別或個數不同而實現的多型機制。 是一種靜態的繫結機制(在編譯時已經知道具體執行的是哪個程式碼段)。   
    
override是覆蓋。覆蓋是一種動態繫結的多型機制。即在父類和子類中同名元素(如成員函式)有不同 的實現程式碼。執行的是哪個程式碼是根據執行時實際情況而定的。 

Overrride例項 :

Java程式碼  收藏程式碼
  1. class A{     
  2. public int getVal(){     
  3.    return(5);     
  4. }     
  5. }     
  6. class B extends A{     
  7. public int getVal(){     
  8.    return(10);     
  9. }     
  10. }     
  11. public class override {     
  12. public static void main(String[] args) {     
  13.    B b = new B();     
  14.    A a= (A)b;//把 b 強 制轉換成A的型別     
  15.    int x=a.getVal();     
  16.    System.out.println(x);     
  17. }     
  18. }   

 結果:10 

Overload例項:

Java程式碼  收藏程式碼
  1. //Demostrate method voerloading.     
  2. class OverloadDemo {     
  3. void test(){     
  4.    System.out.println("NO parameters");     
  5. }     
  6. void test(int a){     
  7.    System.out.println("a:"+a);     
  8. }//end of Overload test for one integer parameter.     
  9. void test(int a, int b){     
  10.    System.out.println("a and b:"+a+" "+b);     
  11. }  
  12. double test(double a){     
  13.    System.out.println("double a:"+a);     
  14.    return a*a;     
  15. }  
  16. }  
  17. public class Overload{     
  18. public static void main(String[] args) {     
  19.    OverloadDemo ob = new OverloadDemo();     
  20.    double result;     
  21.    ob.test();     
  22.    ob.test(10);     
  23.    ob.test(1020);     
  24.    result = ob.test(123.25);     
  25.    System.out.println("Result of ob.test(123.25):"+result);  
  26. }  
  27. }  

 結果: 

NO parameters 
a:10 
a and b:10 20 
double a:123.25 
Result of ob.test(123.25):15190.5625

相關推薦

OverrideOverload含義區別

最近看了一下關於java的基礎知識,對此作了一下蒐集整理:  java中的繼承,方法覆蓋(重寫)override與方法的過載overload的區別  方法的重寫(Overriding)和過載(Overloading)是Java多型性的不同表現。    重寫(Overrid

10. OverrideOverload含義區別

Override(重寫,執行時多型): 是子類對容許訪問父類的方法進行新的編寫的稱呼。其中方法名和形參不能發生改變;即外殼不變,內容可以發生改變。 優點:子類可以根據實際需要,定義特定於自己的行為。也就是說子類能夠實際根據需要實現父類的方法。

OverrideOverload含義區別

java中的繼承,方法覆蓋(重寫)override與方法的過載overload的區別 方法的重寫(Overriding)和過載(Overloading)是Java多型性的不同表現。   重寫(Overriding)是父類與子類之間多型性的一種表現,而過載(Overloadi

JAVA面試筆試:Override Overload區別

1、綜述  Override:重寫; Overload:過載。 這兩者之間的區別在很多Java的面試筆試中都會經常被問到,下面我就捋一下他們的區別。 重寫(Override)也稱覆蓋,它是父類與子類之間多型性的一種表現,而過載(Overload)是一個類中多型性的一種

override overload區別

一、定義:override :覆蓋,用於繼承類對基類中虛成員的實現。使用 override 修飾符來修改方法、屬性、索引器或事件。覆蓋方法提供從基類繼承的成員的新實現。由覆蓋宣告覆蓋的方法稱為覆蓋基方法。覆蓋基方法必須與覆蓋方法具有相同的簽名。overload :過載,用於同

c++中 override overLoad區別

override(重寫,覆蓋)  1、方法名、引數、返回值相同。  2、子類方法不能縮小父類方法的訪問許可權。  3、子類方法不能丟擲比父類方法更多的異常(但子類方法可以不丟擲異常)。  4、存在於父類和子類之間。  5、方法被定義為final不能被重寫。  overload(過載,過載)  1、引數型別、

簡述overrideoverload區別

在文件中經常遇到這兩個單詞,但是意思經常混淆。首先我們看一下這兩個單詞的含義: override(重寫,覆蓋) (1)方法名、引數、返回值相同。 (2)子類方法不能縮小父類方法的訪問許可權。 (3)子類方法不能丟擲比父類方法更多的異常(但子類方法可以不丟擲異常)。 (4)存

overrideoverload的小筆記

override是覆蓋的意思,也就是我們的重寫。可以重寫覆蓋父類的方法,然後實現介面的方法也可以叫做override。 幾個要注意的點: 重寫一定要用和被重寫方法同樣的方法名還有引數列表。 丟擲的異常必須y要小於或者等於父類的 訪問許可權要大於等於父類的 !!返回值可以不同,但一定要是引

php中=====的含義區別

===比較兩個變數的值和型別;==比較兩個變數的值,不比較資料型別。 比如 $a = '123'; $b = 123;   $a === $b為假; $a == $b為真;   有些情況下不能使用==,可以使用===,比如:   <

測者的測試技術手冊:分清Java的OverrideOverload

Java的Override和OverloadOverride重寫:子類對父類的允許訪問的方法實現過程重新編寫,但是 不可改變返回值和入參。重弄寫的規則: 引數列表必須完全與被重寫方法的相同; 返回型別必須完全與被重寫方法的返回型別相同; 訪問許可權不能比父類中被重寫的方法的訪問許可權更低。例如

Java 中的 override overload 運算,看這一篇就夠

問題出現: 即使對於一個經驗豐富的開發人員來說,方法過載和方法覆蓋的區別都能讓他猶豫一下, 對於新手來說,經常容易弄混淆。 有沒有比較深入淺出的理解方式,能讓人過目不忘,用起來還能有條件反射般的速度呢? 其他人是怎麼做的: 寫類似比較的部落格非常之多,無非也就是分開介紹,然後比較區別

Java 中的 override overload,看這一篇就夠

urn 兼容性 return com 容易 定義 erl ext class 問題出現: 即使對於一個經驗豐富的開發人員來說,方法重載和方法覆蓋的區別都能讓他猶豫一下, 對於新手來說,經常容易弄混淆。 有沒有比較深入淺出的理解方式,能讓人過目不忘,用起來還能有條件反射般的

Delphi中overrideoverload的定義區別是什麼?

overload是過載;相同的函式名,引數不同,使用不同的函式體   override   是對父類宣告的vitural或dynamic方法進行覆蓋 overload的使用方法:   function max(a, b :Byte):byte;overload;

類中方法前面使用Override不使用的區別

public class SuperClass {      void print(Stirng s)      {System.out.println(s);} } public class SubClass extends SuperClass{      @Overr

Override(重寫)Overload(重載)的區別

bsp 重寫 基礎 異常 子類 的區別 名稱 多態 load Override是發生在子類繼承父類的基礎上才會有的,子類重寫父類的方法,方法名,參數個數,和參數名稱,返回值都要是一樣的。重寫是覆蓋了父類的方法。子類 覆蓋父類方法時只能拋出父類的異常或者是異常的子類或者父類異

重寫(override過載(overload)的區別

1 /// <summary> 2 /// 定能基類動物類 3 /// </summary> 4 /// <returns></returns> 5 public class Anima

C#物件的三個特點:封裝,繼承,多型, 以及c#中隱藏(new)方法重寫(override)過載(overload)的區別

封裝 1)封裝原則:將不需要對外提供的內容都隱藏起來,把屬性都隱藏,提供公共方法對其訪問,通常有兩種訪問方式:set 設定,get 獲取。 2)封裝結果:存在但是不可見。 3) 訪問修飾符 宣告的可訪問性                                

.com.cn域名的區別所在,各個域名後綴含義

簡介 裏的 .cn dad 代碼 類別 用途 開始 含義 很多人在註冊域名的時候不明白域名後綴的含義,在這裏就介紹兩種最為常用的域名,介紹下他們的區別以及適用的範圍。需要先查詢是否被註冊,我們經常去的就是西部數據和萬網,查詢並註冊未被註冊的域名,一般無論是什麽域名

overridenew的區別

執行c 重新 bstr 方法 重寫 col rac abstract 派生 override 1. override是派生類用來重寫基類中方法的; 2. override不能重寫非虛方法和靜態方法; 3. override只能重寫用virtual、abs

方法的重寫與重載的區別OverrideOverload)。重載的方法是否可以改變返回值的類型

改變 父類 div 之間 如果 如同 java 調用 ava 方法的重寫(Override)與重載(Overload)的區別。重載的方法是否可以改變返回值的類型?【基礎】 解釋: 方法的重寫overriding和重載Overloading是Java多態性的不同表現。 1、重