文編|JavaBuild
哈嘍,大家好呀!我是JavaBuild,以后可以喊我鳥哥!俺滴座右銘是不在沉默中爆發(fā),就在沉默中滅亡,一起加油學(xué)習(xí),珍惜現(xiàn)在來之不易的學(xué)習(xí)時光吧,等工作之后,你就會發(fā)現(xiàn),想學(xué)習(xí)真的需要擠時間,厚積薄發(fā)啦!
標(biāo)題中的問題可以說是很多公司一面的必問題,作為一種劃時代的編程思想,OOP(Object-Oriented-Programming)-面向?qū)ο缶幊痰膫ゴ鬅o需贅言,而Java作為面向?qū)ο缶幊痰恼n代表,更是將這種編程思想推向巔峰。
那么在我們拿到這個問題的時候該如何回答呢?
首先,我們需要搞明白的是,除了面向?qū)ο笾膺€有面向什么?
什么是對象?
在討論面向?qū)ο笾埃B哥想問一句:“你知道什么是對象嗎?在Java的世界中,對象應(yīng)該具備什么特點?”
1、對象具有屬性和行為
2、對象具有變化的狀態(tài)
3、對象具有唯一性
4、對象都是某個類別的實例
5、一切皆為對象,真實世界中的所有事物都可以視為對象
面向?qū)ο笈c面向過程的區(qū)別
目前,編程世界的兩大主流思想是面向過程與面向?qū)ο螅?br>
面向過程: 將問題拆分為多個步驟,分步驟順序解決,環(huán)環(huán)相扣,互相耦合,互相穿插。典型代表:C語言

面向?qū)ο螅?/strong> 將問題抽象化,定義對象的屬性,方法等,用對象驅(qū)動方法的方式解決問題,強(qiáng)調(diào)高內(nèi)聚低耦合,靈活度高,對于復(fù)雜代碼的后期維護(hù)有先天優(yōu)勢,典型代表:Java語言。

面向?qū)ο蟮奶匦?/h2>
通常情況下,我們在很多Java書籍中提到面向?qū)ο蟮奶匦?,都會說三大特性,實則為四大特性,分別為繼承、封裝、多態(tài)、抽象

1)繼承
所謂的繼承是父子之間的屬性與方法的向下傳遞,比如鳥類是父類,而鸚鵡與麻雀是鳥類的子類,它們都繼承了父類的(會飛,有羽毛),同時呢,各自有具有各自的特有屬性,麻雀叫喳喳,鸚鵡學(xué)人語。
在Java中只支持單繼承,麻雀繼承了鳥類這個父類后就無法再繼承其他的父類了,否則會屬性錯亂,無法識別同一個屬性繼承自哪個父類。
2)封裝
封裝是將代碼及其處理的數(shù)據(jù)綁定在一起的一種編程機(jī)制,該機(jī)制保證了程序和數(shù)據(jù)都不受外部干擾且不被誤用。封裝的目的在于保護(hù)信息。
良好的利用封裝可以為我們帶來如下好處:
1,敏感信息安全化,對于很多技術(shù)性公司,非??粗卮a的私有性
2,低耦合,后期維護(hù)方便
3,對復(fù)雜的實現(xiàn)進(jìn)行封裝后,會讓調(diào)用者享受前所未有的快樂!
3)多態(tài)
多態(tài)性主要體現(xiàn)在父類的屬性和方法被子類繼承后或接口被實現(xiàn)類實現(xiàn)后,可以具有不同的屬性或表現(xiàn)方式,主要通過方法的重寫(override)實現(xiàn)。
實現(xiàn)多態(tài)的條件
實現(xiàn)多態(tài)有三個條件:
1、繼承
2、子類重寫父類的方法
3、父類引用變量指向子類對象
實現(xiàn)多態(tài)的技術(shù)稱為:動態(tài)綁定(dynamic binding),是指在執(zhí)行期間判斷所引用對象的實際類型,根據(jù)其實際的類型調(diào)用其相應(yīng)的方法。
Java 中使用父類的引用變量調(diào)用子類重寫的方法,即可實現(xiàn)多態(tài)。
4)抽象
抽象是將一類對象的共同特征總結(jié)出來構(gòu)造類的過程,包括數(shù)據(jù)抽象和行為抽象兩方面。
Java之父詹姆斯.高林斯設(shè)置的Object類就是萬物抽象之源,是所有類的父類,是Java世界的最高抽象,解決了三個問題:我是誰,我從哪里來,要到哪里去!
下一篇文章,我們將基于Object展開,敬請期待呀!