Java是一種面向?qū)ο蟮某绦蜷_(kāi)發(fā)語(yǔ)言,準(zhǔn)確的理解java的面向?qū)ο蟛拍芨酶斓卣莆認(rèn)AVA的編程思想和方法,本文鄭州尚學(xué)堂Java培訓(xùn)專家為大家介紹java面向?qū)ο?,幫助大家更好的理解java。
1、什么是對(duì)象?
首先要說(shuō)明一點(diǎn),對(duì)象不是java的,事實(shí)上他只是一種概念,一種用于解決問(wèn)題的程序設(shè)計(jì)的思想方法。要理解對(duì)象就必須得要和面向?qū)ο蠼Y(jié)合起來(lái)。在面向?qū)ο笾邪涯骋活愂挛锼灿械膶傩院托袨槌橄蟪鰜?lái)之后就形成了一個(gè)類。而類的一個(gè)實(shí)際的例子就叫做對(duì)象。所以從上可以看出類和對(duì)象之間存在著這樣一種關(guān)系:類是具有共同的屬性名稱和行為的一組對(duì)象的抽象,而對(duì)象則是一個(gè)類的真實(shí)的例子。
類是現(xiàn)實(shí)世界或思維世界中的實(shí)體在計(jì)算機(jī)中的反映,它將數(shù)據(jù)以及這些數(shù)據(jù)上的操作封裝在一起。
類描述了具有相同特性(數(shù)據(jù)元素、狀態(tài)變量)和行為(對(duì)數(shù)據(jù)元素、狀態(tài)變量的操作)的對(duì)象集合,如果我需要某個(gè)具有一定功能的工具,那么我可自定義這個(gè)類,里面有我需要的數(shù)據(jù),還有讓這個(gè)類提供的功能。
對(duì)象是具有類類型的變量。類和對(duì)象是面向?qū)ο缶幊碳夹g(shù)中的最基本的概念。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。類是抽象的,不占用內(nèi)存,而對(duì)象是具體的,占用存儲(chǔ)空間。類是用于創(chuàng)建對(duì)象的藍(lán)圖,它是一個(gè)定義包括在特定類型的對(duì)象中的方法和變量的軟件模板。
JAVA是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,對(duì)象是由類抽象出來(lái)的,所有的問(wèn)題都是通過(guò)對(duì)象來(lái)處理,對(duì)象可以操作類的屬性和方法來(lái)解決問(wèn)題,所以了解對(duì)象的產(chǎn)生、操作和消亡是十分必要的。對(duì)象可以認(rèn)為是在一類事物中抽象出某一個(gè)特例,通過(guò)這個(gè)特例來(lái)處理這類事物出現(xiàn)的問(wèn)題,在Java語(yǔ)言中通過(guò)new操作符來(lái)創(chuàng)建對(duì)象。
2、對(duì)象和對(duì)象引用
如下表達(dá)式:A a1 = new A;它代表A是類,a1是引用,a1不是對(duì)象,new A才是對(duì)象,a1引用指向new A這個(gè)對(duì)象。
在JAVA里,“=”不能被看成是一個(gè)賦值語(yǔ)句,它不是在把一個(gè)對(duì)象賦給另外一個(gè)對(duì)象,它的執(zhí)行過(guò)程實(shí)質(zhì)上是將右邊對(duì)象的地址傳給了左邊的引用,使得左邊的引用指向了右邊的對(duì)象。JAVA表面上看起來(lái)沒(méi)有指針,但它的引用其實(shí)質(zhì)就是一個(gè)指針,引用里面存放的并不是對(duì)象,而是該對(duì)象的地址,使得該引用指向了對(duì)象。在JAVA里,“=”語(yǔ)句不應(yīng)該被翻譯成賦值語(yǔ)句,因?yàn)樗鶊?zhí)行的確實(shí)不是一個(gè)賦值的過(guò)程,而是一個(gè)傳地址的過(guò)程,被譯成賦值語(yǔ)句會(huì)造成很多誤解,譯得不準(zhǔn)確。
再如:A a2;它代表A是類,a2是引用,a2不是對(duì)象,a2所指向的對(duì)象為空null;
再如:a2 = a1;它代表,a2是引用,a1也是引用,a1所指向的對(duì)象的地址傳給了a2(傳址),使得a2和a1指向了同一對(duì)象。
綜上所述,可以簡(jiǎn)單的記為,在初始化時(shí),“=”語(yǔ)句左邊的是引用,右邊new出來(lái)的是對(duì)象。
在后面的左右都是引用的“=”語(yǔ)句時(shí),左右的引用同時(shí)指向了右邊引用所指向的對(duì)象。再所謂實(shí)例,其實(shí)就是對(duì)象的同義詞。
3、Java繼承性分析
繼承是面向?qū)ο笞铒@著的一個(gè)特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數(shù)據(jù)屬性和行為,并能擴(kuò)展新的能力。Java繼承是使用已存在的類的定義作為基礎(chǔ)建立新類的技術(shù),新類的定義可以增加新的數(shù)據(jù)或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。這種技術(shù)使得復(fù)用以前的代碼非常容易,能夠大大縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)費(fèi)用。
繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因?yàn)樗试S創(chuàng)建分等級(jí)層次的類。繼承可以理解為一個(gè)對(duì)象從另一個(gè)對(duì)象獲取屬性的過(guò)程。如果類A是類B的父類,而類B是類C的父類,我們也稱C是A的子類,類C是從類A繼承而來(lái)的。在Java中,類的繼承是單一繼承,也就是說(shuō),一個(gè)子類只能擁有一個(gè)父類。繼承中最常使用的兩個(gè)關(guān)鍵字是extends(IS-A,是一個(gè)什么東西)和implements(Has-A,有一個(gè)什么功能)。這兩個(gè)關(guān)鍵字的使用決定了一個(gè)對(duì)象和另一個(gè)對(duì)象是否是IS-A(是一個(gè))關(guān)系。
鄭州尚學(xué)堂Java培訓(xùn)專家提醒大家,通過(guò)使用這兩個(gè)關(guān)鍵字,我們能實(shí)現(xiàn)一個(gè)對(duì)象獲取另一個(gè)對(duì)象的屬性。所有Java的類均是由類繼承而來(lái)的,所以O(shè)bject是所有類的祖先類,而除了Object外,所有類必須有一個(gè)父類。通過(guò)extends關(guān)鍵字可以申明一個(gè)類是繼承另外一個(gè)類而來(lái)的,通過(guò)使用關(guān)鍵字extends,子類可以繼承父類所有的方法和屬性,但是無(wú)法使用private(私有)的方法和屬性。我們通過(guò)使用instanceof操作符,能夠確定子類IS-A父類。