客觀存在的實體和主觀抽象的概念,都可以作為物件,即萬物是物件。
oop,是軟體開發中一種自生而下的程式設計方式,它通過「物件」模擬現實環境,把環境屬性注入到「物件」當中,通過操作物件以及物件之間的關聯實現程式功能,這種方式提公升了程式結構清晰度,提高了**的重用性和擴充套件性,也降低了開發人員對程式理解和開發的難度。
物件具有屬性和行為,屬性是穩定的,行為不穩定。而且物件之間往往具有各種關聯關係。因此物件導向程式設計比面向過程程式設計更穩定。在面對頻繁的需求更改時,改變的往往是行為而物件本身一般不會改變,從而保證架構的穩定性。 封裝
:封裝的是自己的屬性和方法,保留一些對外介面使之與外部發生聯絡。
使用封裝有三大好處:
1、良好的封裝能夠減少耦合。
2、類內部的結構可以自由修改。
3、可以對成員進行更精確的控制。
4、隱藏資訊,實現細節
繼承:子類繼承父類,可以繼承父類的方法和屬性,實現了多型以及**的重用,因此解決了系統的重用性和擴充套件性。但是繼承破壞了封裝,因為它是對子類開放的,修改父類會導致所有子類的改變,因此繼承一定程度上又破壞了系統的可擴充套件性。所以,繼承需要慎用,只有明確的is-a關係才能使用。同時繼承是在程式開發過程中重構得到的,而不是程式設計之初就使用繼承,很多物件導向開發這濫用繼承,結果造成後期的**解決不了需求的變化了。因此優先使用組合而不是繼承,是物件導向開發中乙個重要的經驗。
1、子類擁有父類非private的屬性和方法。
2、子類可以擁有自己屬性和方法,即子類可以對父類進行擴充套件。
3、子類可以用自己的方式實現父類的方法。
缺點:1、父類變,子類就必須變。
2、繼承破壞了封裝,對於父類而言,它的實現細節對與子類來說都是透明的。
3、繼承是一種強耦合關係。
多型:
1.基於繼承實現的多型,基於繼承的實現機制主要表現在父類和繼承該父類的乙個或多個子類對某些方法的重寫,多個子類對同一方法的重寫可以表現出不同的行為。對於引用子類的父類型別,在處理該引用時,它適用於繼承該父類的所有子類,子類物件的不同,對方法的實現也就不同,執行相同動作產生的行為也就不同。
2.基於介面實現的多型
繼承是通過重寫父類的同一方法的幾個不同子類來體現的,那麼就可就是通過實現介面並覆蓋介面中同一方法的幾不同的類體現的。
在介面的多型中,指向介面的引用必須是指定這實現了該介面的乙個類的例項程式,在執行時,根據物件引用的實際型別來執行對應的方法。
其實在繼承鏈中物件方法的呼叫存在乙個優先順序:this.show(o)、super.show(o)、this.show((super)o)、super.show((super)o)。
物件導向程式設計有三大特性:封裝、繼承、多型。
封裝隱藏了類的內部實現機制,可以在不影響使用的情況下改變類的內部結構,同時也保護了資料。對外界而已它的內部細節是隱藏的,暴露給外界的只是它的訪問方法。
繼承是為了重用父類**。兩個類若存在is-a的關係就可以使用繼承。,同時繼承也為實現多型做了鋪墊。那麼什麼是多型呢?多型的實現機制又是什麼?請看我一一為你揭開:
所謂多型就是指程式中定義的引用變數所指向的具體型別和通過該引用變數發出的方法呼叫在程式設計時並不確定,而是在程式執行期間才確定,即乙個引用變數倒底會指向哪個類的例項物件,該引用變數發出的方法呼叫到底是哪個類中實現的方法,必須在由程式執行期間才能決定。因為在程式執行時才確定具體的類,這樣,不用修改源程式**,就可以讓引用變數繫結到各種不同的類實現上,從而導致該引用呼叫的具體方法隨之改變,即不修改程式**就可以改變程式執行時所繫結的具體**,讓程式可以選擇多個執行狀態,這就是多型性。
物件導向 初識物件導向
面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...
Java4Android 物件導向基礎2
一 建立類的方法 class類名 屬性 方法 屬性也叫成員變數,主要用於描述類的狀態 方法也叫成員方法,主要用於描述類的行為 類名要使用有意義的英文單詞 二 建立物件的方法 生成物件的方法 格式 類名 物件名 new 類名 例如 dog dog new dog dog d 建立乙個dog的引用 ne...
物件導向程式設計01 面向過程 物件導向
前面12講我已經寫完了從零開始學j ase 慶祝完結撒花!那麼從今天開始正式步入物件導向程式設計。建議開啟本章之前先回顧 j ase010方法詳解和 j a變數與方法的呼叫 同類操作中與跨類操作中的對比 物件導向程式設計 oop object oriented programming 物件導向程式設...