1. 程式人生 > >Java中過載(overload)和重寫(override)的區別?

Java中過載(overload)和重寫(override)的區別?

概念

方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。
過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;
重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重寫方法更好訪問,不能比父類被重寫方法宣告更多的異常(里氏代換原則)。過載對返回型別沒有特殊的要求。

規則:

方法過載的規則:

  1. 方法名一致,引數列表中引數的順序,型別,個數不同。
  2. 過載與方法的返回值無關,存在於父類和子類, 同類中。
  3. 可以丟擲不同的異常,可以有不同修飾符。
  4. 靜態方法也可以過載,但是不能重寫。

方法重寫的規則:

  1. 引數列表必須完全與被重寫方法的一致,返回型別必須完全與被重寫方法的返回型別一致。
  2. 構造方法不能被重寫,宣告為 final 的方法不能被重寫,宣告為 static 的方法不能被重寫,但是能夠被再次
    宣告。
  3. 訪問許可權不能比父類中被重寫的方法的訪問許可權更低。
  4. 重寫的方法能夠丟擲任何非強制異常(UncheckedException,也叫非執行時異常),無論被重寫的方法是
    否丟擲異常。但是,重寫的方法不能丟擲新的強制性異常,或者比被重寫方法宣告的更廣泛的強制性異常,反之則
    可以。

相關推薦

Java過載overload重寫override區別

概念 方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。 過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同

過載Overload重寫Override區別過載的方法能否根據返回型別進行區分?

方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重

過載Overload重寫Override區別

面試時,問:過載(Overload)和重寫(Override)的區別? 答:方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;重寫發生

深入理解Java的同步靜態方法synchronizedclass程式碼塊的類鎖 深入理解Java併發synchronized同步化的程式碼塊不是this物件時的操作

一.回顧學習內容  在前面幾篇部落格中我我們已經理解了synchronized物件鎖、物件鎖的重入、synchronized方法塊、synchronized非本物件的程式碼塊,  連結:https://www.cnblogs.com/SAM-CJM/category/1314992.h

深入理解Java的同步靜態方法synchronizedclass程式碼塊的類鎖

一.回顧學習內容  在前面幾篇部落格中我我們已經理解了synchronized物件鎖、物件鎖的重入、synchronized方法塊、synchronized非本物件的程式碼塊,  我們來總結一下,上面幾篇講到內容:  1.建立執行緒類的兩個方式:繼承Thread類和實現Runable介面。  2.瞭解了Th

Java的comparable接口Comparator接口的區別

java tor 舉例 compare 不能 style void doc r+ 一.comparable和Comparator的區別 1、Comparable和Comparator都是用來實現集合中元素的比較、排序的。 2、Comparable是在類內部定義的方法

Java的基本資料型別引用資料型別的區別

一、資料型別 Java中的資料型別分為兩大類,基本資料型別和引用資料型別。 1、基本資料型別 基本資料型別只有8種,可按照如下分類 ①整數型別:long、int、short、byte ②浮點型別:float、double ③字元型別:char ④布林型別:boolean No.

淺談java"&&""&"的區別

“&&”和”&”都是java中的邏輯運算子,並且它們都表示“邏輯與”即“同真則真,有一假則假”,它們的區別在於”&&”具有短路功能,即如果左邊是false,則右邊的邏輯表示式不會執行。而”&”沒有短路功能,無論左邊是false還是true右邊都會執行。

java類的初始化物件的例項化區別

在程式RUN的一瞬間,什麼類啊,靜態的東西啊(靜態塊,靜態方法,靜態屬性),刷刷刷的就在記憶體中載入(你可以看作初始化)了,只加載一次,然後main方法開始執行(這就是為什麼main方法必須是靜態的原

java過載overload重寫override區別

方法過載(overload):方法過載就是在一個類中可以建立多個方法,它們具有相同的名字,但是具有不同的引數和不同的定義,呼叫方法時通過傳遞給它們的不同引數個數和引數型別來決定具體使用哪個方法,這就是多型性,過載的時候方法名一樣,引數型別和個數不一樣,返回值型別可以相同可以不

JAVA方法的過載overload覆蓋override

方法的過載(overload)和覆蓋(override) 有的時候,類的同一種功能有多種實現方式,到底採用哪種實現方式,取決於呼叫者給定的引數。例如我們最常用的System.out.println()能夠打印出任何資料型別的資料,它有多種實現方式。執行時,Java虛擬機器

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

過載(Overload) 過載是指在一個類裡面,方法名相同,引數不同。java中有構造器過載和方法過載(意義是一樣的,叫法不同) public class Car { private String name; private String p

關於JVM方法呼叫的相關指令,以及解析Resolution分派Dispatch的解釋——過載的實現原理與重寫的實現原理

我們看一下main方法的位元組碼,可知say1方法是static方法,所有它的方法呼叫指令為invokestatic,再者他是一個靜態解析過程,我們可以從位元組碼清除地看出來 StaticResolution.say1 ()字樣。 say2()是一個final方法,不可以過載,重寫,雖然是一個invokev

Java方法的重載重置覆蓋區別

設置 同時存在 一個 return 同名方法 區分 返回 重置 參數順序 簡單來說,重載就是在同一類中允許同時存在一個以上的同名方法,只要這些方法的參數個數或類型不同即可,而重置(覆蓋)是子類重新定義父類中己經定義的方法,即子類重寫父類方法。 方法的重載 方法的重載就是在同

Java常量定義在interfaceclass的區別

var tac 不能被繼承 ble -o err 模式 variable 個人愛好 最終結論:定義常量在interface和class中其實都行,關鍵是看你的設計和個人愛好。 Java中interface中定義變量默認都是"public static final"類型的,

Java的代碼點代碼單元

swing enter 錯誤 字體 消息 關系 小文本 開發人員 界面 文章來源:http://blog.csdn.net/weizhaozhe/article/details/3909079 這篇文章講的很細,但是對於初學者也很難理解,在後面的筆記中,我會陳述自己的簡單

JAVA方法的重載overload覆蓋override

pub dem 除了 成了 @override fin ros 功能 stub 方法的重載(overload)和覆蓋(override) 有的時候,類的同一種功能有多種實現方式,到底采用哪種實現方式,取決於調用者給定的參數。例如我們最常用的System.out.printl

C#重寫override覆蓋new區別

實現 div del end 抽象方法 ring reg strong AR 重寫 用關鍵字 virtual 修飾的方法,叫虛方法。可以在子類中用override 聲明同名的方法,這叫“重寫”。相應的沒有用virtual修飾的方法,我們叫它實方法。重寫會改變父類方法的功能。

JAVAIO流文字檔案的操作BufferedWriterBufferedReader 緩衝區

JAVA 中 字元流的緩衝區 分為了BufferedWriter 和BufferedReader 先講BufferedWriter 作用: 緩衝區要結合流才可以使用,而且在流的基礎上對流的功能進行了增強。我們也可以說,在我們以後的實際運用之中,為了增強一下I

Java資料結構:二叉樹的前序,序,後序遍歷遞迴非遞迴

嚶嚶嚶,兩個月沒寫部落格了,由於有點忙,今天開始日更部落格。 今天總結一下學習樹的先根,中根,後根。每種兩種方法,遞迴和非遞迴。 先根: 遞迴: 思路:先根遍歷,即第一次遇到的結點就開始列印。先一直遍歷左子樹,直到未空,然後右子樹,直到為空。遞迴下去。 過程:先將1進入方法