首先,我們要明確,物件導向不是語法,是乙個思想,是一種程式設計模式
面向過程(pop):關注點在於做了什麼,描述的是發展的過程。
物件導向(oop):關注點在於能做什麼,描述的是物件與物件之間的關係。
物件導向的特點:繼承、多型、封裝
接下來,我以一家銀行為例子,大概說一下我對物件導向這幾個特徵的理解。
封裝:
對於一般人來說,銀行的印象就只有一排對外辦公的視窗,然後有存款和取款2種基本業務。
銀行是乙個結構非常複雜,功能非常眾多的機構。但實際上,我們並不會很關心它的內部是怎樣運作的,比如銀行的員工是怎樣數錢的,怎樣記錄存款,怎樣開保險櫃,等等。這些對於外部的人員來說,知道了可能會引起更多不必要的麻煩。所以銀行只需要告訴你,你可以在這個視窗辦理業務,可以存款和取款,就夠了。
所謂的封裝,就是指把內部的實現隱藏起來,然後只暴露必要的方法讓外部呼叫。
繼承:
剛才提到了銀行有2種最基本的業務,存款和取款。但現實中,大部分的銀行都不止這兩種業務,還有很多其他的業務,比如投資視窗、辦理對公業務的視窗等等。這些業務,是在最基本的銀行訪問款業務的基礎上再新增的,所以我們可以理解成,基本的銀行是只有2種業務的,然後後來的銀行在保留了原有銀行的業務基礎上,再擴充套件了其他的業務。
如果把基本的銀行看做父類(基類),包含存款和取款2個公共方法,那麼後來的銀行可以看做是子類,它在繼承了基本銀行訪問款的公共方法隻後,還自己新增了投資和對公業務兩個公共方法。有些銀行甚至會重寫基本的訪問款功能,讓自己和基本銀行的業務有一定的區別。這個過程,就是繼承。
多型:
同樣是存款的業務,如果我拿著人民幣和拿著美元去銀行辦理,實際上銀行處理的方式是不一樣的。這種辦理同一種業務(公共方法),由於給予的內容(傳入的引數型別或者數量)不一樣,而導致操作(最終實現的方法)不一樣,叫做編譯多型,也叫做函式的過載。
接下來,我去了一家銀行存款,我不知道這家銀行的存款業務有沒有和基本銀行不一樣,反正我就是把錢存進去了,然後具體業務的實現究竟是呼叫了基本銀行存款功能,還是這家銀行本身有新的存款功能實現,我是不關心的。這種外部直接呼叫乙個方法介面,然後具體實現的內容由實際處理的類來決定使用基類或者子類的方法,就叫做執行時多型。
物件導向的概念
物件導向 他是乙個變成思路,不會改變我們預期的效果 優點 使用物件導向,會讓 的復用性大大提高,便於迭代 特徵 封裝 多肽 繼承 抽象 例 面向過程 小花去餐廳點餐吃飯 物件導向 小花 去 吃 餐廳 點餐 小花.去 餐廳.點餐 小花.吃 建立物件的方法 字面量let obj 通過建構函式和new 結...
物件導向的概念
之前我們已經說過很多次 物件導向 這個詞了,相信大家這會兒對它應該有點熟悉但更多還是陌生吧。實際上,物件導向是我們比較熟悉的一種方式,或者說,物件導向是一種更加接近我們日常思考方式的一種程式設計思想。在物件導向出現之前,使用比較多的是面向過程的程式設計思想。面向過程就是將乙個任務拆分成若干個小任務,...
物件導向的概念
今天加深了對物件導向概念的理解。以下純屬個人還不太正確的理解,受到學長的啟發 如今的我還是這樣的思想。1 建表。2 邊寫 邊寫方法,邊改資料庫。而更好的物件導向的乙個流程應該如下 這裡只是粗略說明 1 建表 建模型 類 物件 是對物件進行操作,甚至是對物件的陣列進行操作。2 根據需求,根據這個專案需...