面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別:
面向過(guò)程 :面向過(guò)程性能比面向?qū)ο蟾摺?因?yàn)轭愓{(diào)用時(shí)需要實(shí)例化,開(kāi)銷比較大涯保,比較消耗資源诉濒,所以當(dāng)性能是最重要的考量因素的時(shí)候,比如單片機(jī)夕春、嵌入式開(kāi)發(fā)未荒、Linux/Unix 等一般采用面向過(guò)程開(kāi)發(fā)。但是及志,面向過(guò)程沒(méi)有面向?qū)ο笠拙S護(hù)片排、易復(fù)用、易擴(kuò)展速侈。
面向?qū)ο?:面向?qū)ο笠拙S護(hù)率寡、易復(fù)用、易擴(kuò)展锌畸。 因?yàn)槊嫦驅(qū)ο笥蟹庋b勇劣、繼承、多態(tài)性的特性潭枣,所以可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng)更加靈活幻捏、更加易于維護(hù)盆犁。但是,面向?qū)ο笮阅鼙让嫦蜻^(guò)程低篡九。
Java作為一種編程語(yǔ)言性能不高的原因是否是因?yàn)槊嫦蜻^(guò)程性能比面向?qū)ο蟾撸?br>
這個(gè)并不是根本原因谐岁,面向過(guò)程也需要分配內(nèi)存,計(jì)算內(nèi)存偏移量榛臼,Java 性能差的主要原因并不是因?yàn)樗敲嫦驅(qū)ο笳Z(yǔ)言伊佃,而是 Java 是半編譯語(yǔ)言,最終的執(zhí)行代碼并不是可以直接被 CPU 執(zhí)行的二進(jìn)制機(jī)械碼沛善。
而面向過(guò)程語(yǔ)言大多都是直接編譯成機(jī)械碼在電腦上執(zhí)行航揉,并且其它一些面向過(guò)程的腳本語(yǔ)言性能也并不一定比 Java 好
java的四個(gè)基本特征(抽象,封裝金刁,繼承帅涂,多態(tài)):
一议薪、抽象:現(xiàn)實(shí)生活中的事物被抽象成對(duì)象,把具有相同屬性和行為的對(duì)象被抽象成類媳友,再?gòu)木哂邢嗤瑢傩院托袨榈念愔谐橄蟪龈割愃挂椤S妙悺⒎椒ù济⒊蓡T變量表示哼御。
二、封裝:隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié)焊唬,僅僅對(duì)外公開(kāi)接口恋昼。
封裝具有以下優(yōu)點(diǎn):
1.便于使用者正確、方便的使用系統(tǒng)求晶,防止使用者錯(cuò)誤修改系統(tǒng)屬性焰雕;
2.有助于建立各個(gè)系統(tǒng)之間的松耦合關(guān)系;
3.提高軟件的可重用性芳杏;
4.降低了大型系統(tǒng)的風(fēng)險(xiǎn)矩屁,即便整個(gè)系統(tǒng)不成功,個(gè)別獨(dú)立的子系統(tǒng)有可能還有價(jià)值爵赵。
封裝的兩大原則:
1.把盡可能多的東西藏起來(lái)吝秕,對(duì)外提供簡(jiǎn)潔的接口;
2.把所有的屬性封裝起來(lái)空幻。
三烁峭、繼承:子類和父類之間的繼承關(guān)系,子類可以獲取到父類的屬性和方法秕铛。
四约郁、多態(tài)
3個(gè)必要條件:
1.繼承
2.重寫(xiě)
3.父類引用指向子類對(duì)象
當(dāng)使用多態(tài)方式調(diào)用方法時(shí),首先檢查父類中是否有該方法但两,如果沒(méi)有鬓梅,則編譯錯(cuò)誤;如果有谨湘,再去調(diào)用子類的同名方法绽快。
多態(tài)的好處:可以使程序有良好的擴(kuò)展,并可以對(duì)所有類的對(duì)象進(jìn)行通用處理紧阔。
重載和重寫(xiě)的區(qū)別:
重寫(xiě) :
1.發(fā)生在父類與子類之間
2.方法名坊罢,參數(shù)列表,返回類型(除過(guò)子類中方法的返回類型是父類中返回類型的子類)必須相同
3.訪問(wèn)修飾符的限制一定要大于被重寫(xiě)方法的訪問(wèn)修飾符(public>protected>default>private)
4.重寫(xiě)方法一定不能拋出新的檢查異成玫ⅲ或者比被重寫(xiě)方法申明更加寬泛的檢查型異常
重載 :
1.重載Overload是一個(gè)類中多態(tài)性的一種表現(xiàn)
2.重載要求同名方法的參數(shù)列表不同(參數(shù)類型活孩,參數(shù)個(gè)數(shù)甚至是參數(shù)順序)
3.重載的時(shí)候,返回值類型可以相同也可以不相同秫筏。無(wú)法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)
區(qū)別:
1诱鞠、重寫(xiě)實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)挎挖,而重載實(shí)現(xiàn)的是編譯時(shí)的多態(tài)。
2航夺、重寫(xiě)的方法參數(shù)列表必須相同蕉朵;而重載的方法參數(shù)列表必須不同。
3阳掐、重寫(xiě)的方法的返回值類型只能是父類類型或者父類類型的子類始衅,而重載的方法對(duì)返回值類型沒(méi)有要求。
構(gòu)造器Constructor是否可被override:
構(gòu)造器(override)不能被繼承缭保,因此不能重寫(xiě)overriding汛闸,但是可以被重載overloading