java 继承类_java类的继承
繼承就是在一個現有類型的基礎上,通過增加新的方法或者重定義已有方法(重寫)的方式,產生一個新的類型。繼承是面向對 象的三個基本特征——封裝、繼承、多態的其中之一,我們在使用java時編寫的每一個類都是在繼承,因為在java語言 中,java.lang.object類是所有類最根本的基類(或者叫父類、超類),如果我們新定義的一個類沒有明確地指定繼承自哪個基類,那么java 就會默認為它是繼承自object類的。
1.為什么需要使用繼承??提高代碼的重用性。?提高程序的擴展性。
2.Java繼承的語法格式?Java繼承的關鍵字:extends?格式:?public class 類名(子類,派生類,超類) extends 類名(父類,基類) {?}??注意:?Java類的繼承是單繼承。
3.子類繼承到了父類的哪些屬性和方法?子類繼承父類后,子類繼承到了父類所有的屬性和普通方法。構造方法沒有被子類繼承。?能不能調用方法或屬性,是因為訪問修飾符的關系來決定的。?public所有的地方都可以調用?protected當前包下和有繼承關系不同包的子類中。?默認的只能在當前包下調用?private只能在當前類中。?子類能自己定義屬性和方法嗎??可以并且子類可以擁有比父類更多的屬性和方法
4.方法重寫?方法重寫的條件?必須要存在繼承關系?方法的返回值類型,方法名,參數個數,參數類型,參數順序都必須要和父類的完全一致。?子類重寫方法時,方法的訪問修飾符可以大于或者等于父類方法的訪問修飾符。?在調用方法的時候是否會調用錯方法??創建的對象是否是子類的(new 構造方法())?如果是子類的構造方法創建的對象,那會優先執行子類的方法,子類沒有才會執行父類的方法。?重載和重寫的區別:?重載和重寫都是針對方法的概念,在弄清楚這兩個概念之前,我們先來了解一下什么叫方法的型構。型構就是指方法的組成結構,具體包括方法的名稱和參數,涵蓋 參數的數量、類型以及出現的順序,但是不包括方法的返回值類型,訪問權限修飾符,以及abstract、static、final等修飾符。比如下面兩個就是具有相同型構的方法:?public void method(int i string s) {?// do something?}?public string method(int i string s) {?// do something?}?而這兩個就是具有不同型構的方法:?public void method(int i string s) {// do something?}?public void method(string s int i) {?// do something?}?重載:?英文名是overload,是指在同一個類中定義了一個以上具有相同名稱,但是型構不同的方法。在同一個類中,是不允許定義多于一個的具有相同型構的方法的。?方法名相同,但參數類型、數量或順序必有一不同。?在同一類中或有繼承關系的類中均可重載。?重寫:?英文名是override,是指在繼承情況下,子類中定義了與其基類中方法具有相同型構的新方法,就叫做子類把基類的方法重載了。這是實現多態必須的步驟。?方法名、參數類型、數量、順序必須完全相同,訪問修飾符可以不同,但子類必須大于或等于父類。只發生在有繼承關系的類中。
5.自動轉型?方向:由子類自動轉為父類?前提:兩個對象所在的類存在繼承關系?語法:?[1]直接自動轉型?父類名 對象名 = new 子類構造函數();?Student stu =new UNStudent();?[2]在方法中進行自動轉型?子類名 對象名 = new 子類構造函數();?UNStudent unstu =new UNStudent();?teach(unstu);?訪問修飾符 返回值類型 方法名(父類名 參數名){?}?public void teach (Student stu){?}?不必管創建對象左邊的部分,只要看右邊new的構造函數是子類還是父類, 如果是子類,則優先調用子類的方法。?注意:要使用自動轉型,必須要存在繼承關系。?格式:?父類名 對象名 = new 子類構造方法(參數值,...);?Student un = new UNStudent();?un.play();?使用自動轉型后,不能調用子類自定義的方法;?因為Java編譯時,只會根據對象名的類型去查找方法是否存在,如果存在則通過編譯,如果不存在則報錯。?實例:一個大學老師,可以教大學生,也可以教初中生,高中生,小學生?那么,對于這個教學的方法我們就可以只寫一次。然后在使用時進行相應的自動轉換一達到教學各種不同階層學生的目地。?對于我們來說,使用自動轉型,那么就只能調用父類中已經定義過的方法。?對于這個轉型,我們有2種方法:?一: 父類名 父類對象名 = new 子類構造函數();二:父類名 父類對象名 = new 子類構造函數() 子類名 子類對象名 = new 子類構造函數();?public 返回值類型 方法名(父類類名 父類對象名){?父類對象名.方法名();?}?方法名(父類對象名);?方法名(子類對象名);但是,自動轉型也是有明顯缺點的,如果使用自動轉型,則無法調用子類的獨有方法。因為計算機比較笨,它只能按照固定的已經設定好的方式去執行,Java在編譯的時候,是根據對象名的類型去編譯程序,這個時候在子類中,是找不到相應的方法的,所以編譯出錯了。
技術分享:www.kaige123.com
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java 继承类_java类的继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 查看网卡是否万兆_linux
- 下一篇: 头发剪短了要快速生发_怎样生发效果最好最