首頁 >Java >java教程 >Java重寫,重載,多型怎麼定義使用

Java重寫,重載,多型怎麼定義使用

王林
王林轉載
2023-05-04 17:22:07924瀏覽

1.重寫:

a.定義:

重寫是子類別對父類別的允許存取的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!

重寫的好處是子類別可以根據需要,定義特定於自己的行為。也就是說子類別能夠根據需要實作父類別的方法。

重寫方法不能拋出新的檢查異常或比被重寫方法申明更加寬泛的異常。範例:

class Animal{

# public void move(){

System.out.println("動物可以移動");

} }

# class Dog extends Animal{

# public void move(){

System.out.println("狗可以跑走");

} }

# 然後我們引用:

Animal a = new Animal(); // Animal 物件

Animal b = new Dog(); // Dog 物件

a.move();// 執行 Animal 類別的方法

# b.move();//執行 Dog 類別的方法 

# 輸出為:

动物可以移动
狗可以跑和走

在上面的例子中可以看到,儘管 b 屬於 Animal 類型,但它運行的是 Dog 類別的 move方法(我們重寫的方法)

這是由於在編譯階段,只是檢查參數的參考類型。

然而在執行時,Java 虛擬機器(JVM)指定物件的類型並且執行該物件的方法。

因此在上面的例子中,之所以能編譯成功,是因為 Animal 類別中存在 move 方法,然而運行時,運行的是特定物件的方法。

b.規則:

1.參數列表必須完全與重寫方法的相同。

2.傳回類型與重寫方法的回傳類型可以不相同,但是必須是父類別回傳值的衍生類別。

3.存取權限不能比父類別中被重寫的方法的存取權限更低。

4.父類別的成員方法只能被它的子類別重寫。如果在同一套件裡的子類別可以重寫所有的父類別方法,除了宣告為 private 和 final 的方法。

5.宣告為 final 的方法不能被重寫,而static 的方法不能被重寫,但是能夠再次宣告。

6.子類別和父類別不在同一個套件中,那麼子類別只能夠重寫父類別的宣告為 public 和 protected 的非 final 方法。

7.重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。

2.重載:

跟c 差不多的意思。

重載(overloading) 是在一個類別裡面,方法名字相同,而參數不同。傳回類型可以相同也可以不同。

每個重載的方法(或建構函式)都必須有一個獨一無二的參數型別清單。

最常用的地方就是構造器的重載。

與重寫的不同之處就是重載著重於不同的參數。

3.多態:

a.定義:

多態是同一個行為具有多個不同表現或形態的能力。多態就是同一個接口,使用不同的實例而執行不同操作。

學好多態這個概念對應用好介面很重要。

多態的存在的三個必要條件:

1.繼承

2.重寫

3.父類別引用指向子類別物件

# 比如說這個例子,是把一個父類別的引用指向了一個子類別的物件:

Parent p = new Child();

# 注意:使用多態方式呼叫方法時,先檢查父類別中是否有該方法,如果沒有,則編譯錯誤;如果有,再去呼叫子類別的同名方法。

b.虛函數:

虛函數是多態的基礎之一,當然JAVA所有的函數預設都是C 意義上的虛函數所以不用特別去注意,因為動態綁定就是Java的預設行為。

如果 Java 中不希望某個函數有虛擬函數特性,可以加上 final 關鍵字變成非虛函數。

以上是Java重寫,重載,多型怎麼定義使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除