資源描述:
《JAVA(七)-----類高級(jí)部分》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、類高級(jí)部分一類的繼承一類的繼承在現(xiàn)有類的基礎(chǔ)上創(chuàng)建新的類,稱派生類;也稱子類;現(xiàn)有類稱為基類或父類或超類;基類也可以是其它類的派生類;基類的直接派生類稱為直接子類;Java中用extends來(lái)聲明繼承;Java只允許從一個(gè)類派生出子類;基類本身可以獨(dú)立使用;二繼承的關(guān)系:通過(guò)繼承,派生類獲得基類的成員;被繼承的基類成員可以在派生類中訪問(wèn);不能被繼承的基類成員不能在派生類中訪問(wèn);不能被繼承的基類成員雖然不是派生類成員,但卻是派生類對(duì)象組成的部分;基類成員是否能被繼承,由包和成員的訪問(wèn)屬性決定;在同一個(gè)包中,基類中的Private成員不能被繼承,其它成員可以被繼承;在包之間,基類Privat
2、e和未說(shuō)明訪問(wèn)屬性的成員不能被繼承構(gòu)造方法,作為一個(gè)特例,不能被繼承;從基類繼承的成員,其訪問(wèn)屬性不變;7基類中的Static成員,同樣也屬于派生類成員,由基類對(duì)象和派生類對(duì)象共享;三隱藏的繼承成員:被繼承的基類成員可在派生類中直接訪問(wèn),有時(shí)用戶在派生類中定義的成員名與繼承成員的名稱相同,會(huì)造成繼承成員的隱藏;要訪問(wèn)被隱藏的繼承成員,用限定詞Super;Super不能用在static初始化塊中,也不能用在static方法中;在派生類中隱藏繼承的方法成員時(shí),新定義的同名方法的可訪問(wèn)范圍不能比繼承成員的訪問(wèn)范圍??;Public允許在所有地方訪問(wèn),可被繼承;Protected限制在一個(gè)包中所有
3、的地方訪問(wèn),可在包內(nèi),包外被繼承;未說(shuō)明訪問(wèn)屬性的成員只能在同一個(gè)類中訪問(wèn),不能被繼承;Private成員只能在同一個(gè)類中訪問(wèn),不能被繼承;四派生類的構(gòu)造方法基類中不能被繼承的成員,也是派生類對(duì)象的組成部分;基類中不能被繼承的成員,可以通過(guò)被繼承的方法來(lái)訪問(wèn);在創(chuàng)建派生類對(duì)象時(shí),Java解釋器會(huì)自動(dòng)創(chuàng)建隱含的基類對(duì)象,只是該對(duì)象不能直接被使用而已;在派生類的構(gòu)造方法中,可使用Sup7er()方法,來(lái)調(diào)用基類的構(gòu)造方法;如用戶在派生類的構(gòu)造方法中沒(méi)有調(diào)用基類的構(gòu)造方法,則解釋器會(huì)自動(dòng)插入Super()語(yǔ)句來(lái)調(diào)用基類的構(gòu)造方法;如基類定義的構(gòu)造方法帶有參數(shù),則導(dǎo)致編譯錯(cuò)誤,所以定義派生類時(shí)要
4、顯示的使用super;Super()方法必須是派生類構(gòu)造方法的第一條語(yǔ)句,如不是,則會(huì)編譯出錯(cuò);super()方法之前只能是空行或注釋語(yǔ)句;五多級(jí)繼承Java中允許多級(jí)繼承,即派生類可以是其它類的基類;繼承具有傳遞性,派生類從基類中繼承的成員,又可被自己的派生類繼承;派生類稱子類,派生類的派生類稱間接子類;基類稱直接基類,基類的基類稱間接基類;二多態(tài)Java對(duì)數(shù)據(jù)類型執(zhí)行強(qiáng)制檢查,一個(gè)基本數(shù)據(jù)類型的變量只能存儲(chǔ)相同類型的數(shù)據(jù),一個(gè)對(duì)象變量只能引用相同類型的對(duì)象;在派生類中,一個(gè)基類對(duì)象可以引用一個(gè)子類對(duì)象;這一功能在java中用多態(tài)來(lái)解決;應(yīng)用多態(tài)的前提:用基類變量引用子類對(duì)象;基類變量
5、調(diào)用的方法既是基類成員,也是子類成員;被調(diào)用方法的名稱、參數(shù)、返回值,在基類和子類中完全相同;7當(dāng)子類與基類具有同名的方法,且方法的參數(shù)和返回值都相同時(shí),便可應(yīng)用多態(tài)機(jī)制;當(dāng)基類變量調(diào)用對(duì)象方法時(shí),java解釋器根據(jù)基類變量引用的對(duì)象類型決定所調(diào)用的方法,而不是根據(jù)基類變量的類型來(lái)決定;*只能用基類變量引用子類對(duì)象,不能用子類變量引用基類對(duì)象,否則提示類型不匹配;三finalFinal聲名數(shù)據(jù)成員時(shí),表示該成員為常量初始化后,其值不能再修改;Final聲名方法時(shí),表示該方法在子類中不能覆蓋,即不能在子類中定義同名的方法;Final聲名類時(shí),表示該類不能派生任何子類;四抽象類抽象類用abs
6、tract來(lái)聲名:抽象類中,可用abstract聲名抽象方法,抽象方法沒(méi)有方法體;從抽象類派生子類時(shí),在子類中實(shí)現(xiàn)繼承的抽象方法;如果子類沒(méi)有實(shí)現(xiàn)所有的抽象方法,則子類必須聲名為抽象類;與普通類類似,抽象類中也可以定義數(shù)據(jù)成員和非抽象方法;不管抽象類中是否包含抽象方法,都不能創(chuàng)建初象類的對(duì)象;但可以聲名抽象類變量抽象類變量雖然不能用于引用抽象類對(duì)象(因?yàn)椴荒軇?chuàng)建),但可用于引用實(shí)現(xiàn)了所有抽象方法的派生類對(duì)象;(多態(tài)性)五Object類7Object類是所有類的基類;在程序中,雖然沒(méi)有用extends來(lái)聲明,但編譯器自動(dòng)將用戶定義的類作為object類的子類;object既然是所有類的基類
7、,其變量也可以引用所有其它類的對(duì)象;Object定義的處理對(duì)象的方法:1.toString:public返回字符串類名@對(duì)象的十六進(jìn)制散列碼;將對(duì)象作為字符串使用時(shí)自動(dòng)調(diào)用該方法;2.equalspublic判斷調(diào)用方法的對(duì)象和參數(shù)指定的對(duì)象是否為同一個(gè)對(duì)象;如果是返回true,反之不是同一個(gè)對(duì)象(即使類型,值也是相同的;)則返回false3.getclass:finalpublic:返回包含對(duì)象信息的class類對(duì)象;class類