您好,登錄后才能下訂單哦!
本篇內容主要講解“Java重寫,重載,多態(tài)怎么定義使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java重寫,重載,多態(tài)怎么定義使用”吧!
重寫是子類對父類的允許訪問的方法的實現(xiàn)過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!
重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為。 也就是說子類能夠根據(jù)需要實現(xiàn)父類的方法。
重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常。例子:
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();// 執(zhí)行 Animal 類的方法
b.move();//執(zhí)行 Dog 類的方法
輸出為:
動物可以移動 狗可以跑和走
在上面的例子中可以看到,盡管 b 屬于 Animal 類型,但是它運行的是 Dog 類的 move方法(我們重寫的方法)
這是由于在編譯階段,只是檢查參數(shù)的引用類型。
然而在運行時,Java 虛擬機(JVM)指定對象的類型并且運行該對象的方法。
因此在上面的例子中,之所以能編譯成功,是因為 Animal 類中存在 move 方法,然而運行時,運行的是特定對象的方法。
1.參數(shù)列表必須完全與被重寫方法的相同。
2.返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的派生類。
3.訪問權限不能比父類中被重寫的方法的訪問權限更低。
4.父類的成員方法只能被它的子類重寫。如果在同一包里的子類可以重寫所有的父類方法,除了聲明為 private 和 final 的方法。
5.聲明為 final 的方法不能被重寫,而static 的方法不能被重寫,但是能夠被再次聲明。
6.子類和父類不在同一個包中,那么子類只能夠重寫父類的聲明為 public 和 protected 的非 final 方法。
7.重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。
跟c++差不多的意思。
重載(overloading) 是在一個類里面,方法名字相同,而參數(shù)不同。返回類型可以相同也可以不同。
每個重載的方法(或者構造函數(shù))都必須有一個獨一無二的參數(shù)類型列表。
最常用的地方就是構造器的重載。
與重寫的不同之處就是重載著重于不同的參數(shù)。
多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作。
學好多態(tài)這個概念對應用好接口很重要。
多態(tài)的存在的三個必要條件:
1.繼承
2.重寫
3.父類引用指向子類對象
比如說這個例子,是把一個父類的引用指向了一個子類的對象:
Parent p = new Child();
注意:使用多態(tài)方式調用方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;如果有,再去調用子類的同名方法。
虛函數(shù)是多態(tài)的基礎之一,當然JAVA所有的函數(shù)默認都是C++意義上的虛函數(shù)所以不用特別去注意,因為動態(tài)綁定是Java的默認行為。
如果 Java 中不希望某個函數(shù)具有虛函數(shù)特性,可以加上 final 關鍵字變成非虛函數(shù)。
到此,相信大家對“Java重寫,重載,多態(tài)怎么定義使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。