真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java復(fù)用類(lèi)舉例分析

本篇內(nèi)容主要講解“Java復(fù)用類(lèi)舉例分析”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java復(fù)用類(lèi)舉例分析”吧!

創(chuàng)新互聯(lián)主營(yíng)克什克騰網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,克什克騰h5小程序設(shè)計(jì)搭建,克什克騰網(wǎng)站營(yíng)銷(xiāo)推廣歡迎克什克騰等地區(qū)企業(yè)咨詢(xún)

1.@Override注解:當(dāng)你想要覆蓋某個(gè)方法時(shí),由于不留心導(dǎo)致重載了該方法而并未覆蓋該方法,那么編譯器回產(chǎn)生一條錯(cuò)誤信息。

2.到底是用組合還是用繼承,一個(gè)最清晰的判斷辦法就是問(wèn)一問(wèn)自己是否需要從新類(lèi)向基類(lèi)進(jìn)行向上轉(zhuǎn)型,如果必須向上轉(zhuǎn)型,則繼承是必要的,但如果不需要,則應(yīng)當(dāng)好好考慮自己是否需要繼承。

3.類(lèi)中所有的private方法都隱式地指定為是final的,由于無(wú)法取用private方法,也就無(wú)法覆蓋它,可以對(duì)private方法添加final修飾詞,但這并不能給該方法增加任何額外的意義。

4.如果某方法是private,它就不是基類(lèi)的接口的一部分,它僅是一些隱藏于類(lèi)中的程序代碼(private方法屬于final方法,并可被自動(dòng)認(rèn)為是final方法,對(duì)導(dǎo)出類(lèi)是屏蔽的),只不過(guò)是具有相同名稱(chēng)而已。但如果在導(dǎo)出類(lèi)中以相同的方法名稱(chēng)生成一個(gè)public、protected或包訪問(wèn)權(quán)限方法的話(huà),該方法就不會(huì)產(chǎn)生在基類(lèi)中出現(xiàn)的“僅具有相同名稱(chēng)的情況”。此時(shí)你并沒(méi)有覆蓋該方法,僅是產(chǎn)生了一個(gè)新的方法。由于private方法無(wú)法觸及且能有效隱藏,所有除了把它看成是因?yàn)樗鶜w屬的類(lèi)的組織結(jié)構(gòu)的原因而存在外,其他任何事物都不需要考慮到它。

5.設(shè)計(jì)類(lèi)時(shí),將方法指名是final的,應(yīng)該說(shuō)是明智的,這會(huì)讓別人不去覆蓋你的方法。然而要預(yù)見(jiàn)類(lèi)是如何被復(fù)用的一般是困難的,如果考慮不周,可能會(huì)妨礙其他程序員通過(guò)繼承來(lái)復(fù)用你的類(lèi)。

6.在Beetle上運(yùn)行java時(shí),所發(fā)生的第一件事就是試圖訪問(wèn)Beetle.main()(一個(gè)static方法),于是加載器開(kāi)始啟動(dòng)并找出Bettle類(lèi)的編譯代碼(在名為Beetle.class的文件中),在對(duì)它進(jìn)行加載的過(guò)程中,編譯器注意到它有一個(gè)基類(lèi)(這是由關(guān)鍵字extends得知的),于是會(huì)繼續(xù)加載這個(gè)基類(lèi),不管你是否打算產(chǎn)生一個(gè)基類(lèi)的對(duì)象,這都要發(fā)生。如果基類(lèi)還有其自身的基類(lèi),那么這個(gè)基類(lèi)的基類(lèi)也會(huì)被加載,以此類(lèi)推。最終,根基類(lèi)的static初始化即被執(zhí)行,然后是它緊接著下面的那個(gè)導(dǎo)出類(lèi),以此類(lèi)推,這種方式很重要,因?yàn)?strong>導(dǎo)出類(lèi)的static初始化可能會(huì)依賴(lài)于基類(lèi)成員能否被正確初始化。

7.設(shè)計(jì)一個(gè)系統(tǒng)時(shí),目標(biāo)應(yīng)該是找到或創(chuàng)建某些類(lèi),其中每個(gè)類(lèi)都有具體的用途,而且既不會(huì)太大(包含太多功能而難以復(fù)用),也不會(huì)太小(不添加其他方法就無(wú)法使用)。如果你的設(shè)計(jì)變得過(guò)于復(fù)雜,通過(guò)將現(xiàn)有類(lèi)拆分為更小的部分而添加更多的對(duì)象,通常會(huì)有所幫助。

8.名詞介紹:

  • 封裝:通過(guò)合并特征和行為來(lái)創(chuàng)建新的數(shù)據(jù)類(lèi)型。

  • 實(shí)現(xiàn)隱藏:通過(guò)將細(xì)節(jié)私有化把接口和實(shí)現(xiàn)分離開(kāi)。

  • 多態(tài):用于消除類(lèi)型之間的耦合關(guān)系。


  • 綁定:將一個(gè)方法調(diào)用同一個(gè)方法主體關(guān)聯(lián)起來(lái)。

  • 前期綁定:由編譯器和連接程序?qū)崿F(xiàn),在程序執(zhí)行前進(jìn)行綁定。它是面向過(guò)程的語(yǔ)言中不需要選擇就默認(rèn)的綁定方式。

  • 后期綁定:運(yùn)行時(shí)根據(jù)對(duì)象的類(lèi)型進(jìn)行綁定。也叫做動(dòng)態(tài)綁定或運(yùn)行時(shí)綁定。如果一種語(yǔ)言要實(shí)現(xiàn)后期綁定,就必須具有某種機(jī)制,以便在運(yùn)行時(shí)能判斷對(duì)象的類(lèi)型,從而調(diào)用恰當(dāng)?shù)姆椒ǎ簿褪钦f(shuō),編譯器一直不知道對(duì)象的類(lèi)型,但是方法調(diào)用機(jī)制能找到正確的方法體,并加以調(diào)用。后期綁定的機(jī)制隨編程語(yǔ)言的不同而有所不同,但不管怎樣都必須在對(duì)象中安置某種“類(lèi)型信息”。

9.Java中除了static方法和final方法(private方法屬于final方法)之外,其他所有的方法都是后期綁定。因此將一個(gè)方法聲明為final時(shí),不僅可以防止他人覆蓋該方法,還可以“關(guān)閉”動(dòng)態(tài)綁定,這樣,編譯器就可以為final方法調(diào)用生成更有效的代碼(Java的早期可以,但如今不需要了,所以最好根據(jù)設(shè)計(jì)來(lái)決定是否使用final,而不是出于提高性能的目的)。

9.向上轉(zhuǎn)型,也就是在繼承層次中向上移動(dòng),是安全的,因?yàn)?strong>基類(lèi)不會(huì)具有大于導(dǎo)出類(lèi)的接口,因此,通過(guò)基類(lèi)接口發(fā)送的消息都能保證被接受。

10.基類(lèi)的構(gòu)造器總是在導(dǎo)出類(lèi)的構(gòu)造過(guò)程中被調(diào)用,而且按照繼承層次逐漸向上鏈接,以使每個(gè)基類(lèi)的構(gòu)造器都能得到調(diào)用。這樣做是有意義的,因?yàn)闃?gòu)造器具有一項(xiàng)特殊任務(wù),檢查對(duì)象能否被正確地構(gòu)造。導(dǎo)出類(lèi)只能訪問(wèn)自己的成員,不能方法基類(lèi)的成員(因?yàn)橥ǔ閜rivate類(lèi)型)。只有基類(lèi)的構(gòu)造器才具有恰當(dāng)?shù)闹R(shí)和權(quán)限來(lái)對(duì)自己的元素進(jìn)行初始化。因此,必須令所有的構(gòu)造器都得以調(diào)用,否則就不可能正確構(gòu)造完整對(duì)象,這正是編譯器為什么要強(qiáng)制每個(gè)導(dǎo)出類(lèi)部分都必須調(diào)用構(gòu)造器的原因,在導(dǎo)出類(lèi)的構(gòu)造器主體中,如果沒(méi)有明確指定調(diào)用某個(gè)基類(lèi)構(gòu)造器,它就會(huì)默認(rèn)調(diào)用默認(rèn)構(gòu)造器,如果不存在默認(rèn)構(gòu)造器,編譯器就會(huì)報(bào)錯(cuò)(如果某個(gè)類(lèi)無(wú)任何構(gòu)造器,編譯器就會(huì)自動(dòng)合成出一個(gè)默認(rèn)構(gòu)造器)。

例子:

class Meal {
   
   
   Meal() {
   
   
   System.out.println("Meal()");}}class Bread {
   
   
   Bread() {
   
   
   System.out.println("Bread()");}}class Cheese {
   
   
   Cheese() {
   
   
   System.out.println("Cheese()");}}class Lettuce {
   
   
   Lettuce() {
   
   
   System.out.println("Lettuce()");}}class Lunch extends Meal {
   
   
   Lunch() {
   
   
   System.out.println("Lunch()");}}class PortableLunch extends Lunch {
   
   
   PortableLunch() {
   
   
   System.out.println("PortableLunch()");}}public class Sandwich extends PortableLunch {
   
   
   private Bread b = new Bread();private Cheese c = new Cheese();private Lettuce l = new Lettuce();public Sandwich() {
   
   
   System.out.println("Sandwich()");}public static void main(String[] args) {
   
   
   new Sandwich();}}

運(yùn)行結(jié)果:
Java復(fù)用類(lèi)舉例分析

到此,相信大家對(duì)“Java復(fù)用類(lèi)舉例分析”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站名稱(chēng):Java復(fù)用類(lèi)舉例分析
URL地址:http://weahome.cn/article/igsjpc.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部