很多人學了物件導向語言學了很久卻沒有領會到什麼是物件導向,也正是因為這樣,很多時候我們寫**時感覺無從下手,什麼是物件導向。舉個例子:貪食蛇的遊戲大家玩過吧。蛇是乙個物件,食物是乙個物件。蛇的類中有什麼呢,屬性和方法,屬性有蛇的座標,蛇的長度,方法有上下左右移動。食物有什麼屬性和方法呢,屬性是座標,方法是出現在隨機背景中的某個位置。這就是物件導向的最基本的理解。 再舉乙個例子,乙個介面,inte***ce animal;裡面有乙個方法move();類rabbit實現了這個介面,類tiger實現了這個介面。兔子中有乙個屬性:素食,兔子中的move() 老虎中有乙個屬性:肉食,老虎中的move 。 從這裡我們可以看到類其實就是屬性和其行為的封包,介面就是乙個種行為的規範。 類中我們要特別注意的一點就是:各司其職,不要去含有不該含有的屬性,不要去實現你不該有的方法,這是特別重要的一點。物件導向中除上述的以外還有乙個特別重要的東西就是面向介面程式設計。下面有乙個比較經典的例子。usb介面上可以插u盤,也可以插滑鼠,我們來模擬他,並分析什麼是物件導向。首先我們分析u盤是個類對吧,裡面該有點自己的屬性吧,還有自己的行為吧,滑鼠是個類吧,也該有自己的方法和行為吧。usb介面是個介面,當你寫程式不知道怎麼下手的時候,這些先可以寫上吧。然後是usb介面,他僅僅是乙個介面,只要實現了這個標準的東西就可以插上去使用。所以usb弄成乙個介面,行為是dosomething();ok,開始寫**
inte***ce usb
class udisk implements usb
}class mouse implements usb
}class peopleaction
public static mouse insertmouse()
}class test
}從這個例子中我們也可以看出什麼是物件導向,也就是屬性和其行為的封包,介面對具體實現的解耦。假如我們不用介面,那麼我們總是要這麼寫 udisk disk=new udisk(); mouse mouse=new mouse();我們在test中總是要想到要把u盤弄出來,滑鼠new出來,顯得不直觀。而用了介面過後,從我們peopleaction那個類中我們可以看到插入是我們的乙個行為。我們之所以寫這個類是為了不讓new udisk和new mouse暴露給別人,插入顯得更加地直觀,這是是簡單的工廠模式。插入u盤用u盤,插入滑鼠用滑鼠。當然,更好的也可以用ioc來做,比如說我們幾個人做乙個專案,你寫的是udisk那塊,如果你寫成new udisk,意味著你把udisk的實現給了其他人,假如你udisk裡面的東西需要改動,你還要去找他們商量,如果次數少還可以,搞到幾次估計很難和別人相處。我們要做的是把介面給他,把usb給他,然後用依賴注入的方式注入給usb的引用。直接通過引用呼叫插上去的實體的方法,這也是目前spring框架中用到的,一種很重要的思想。
千言萬語匯成一句話: 物件導向的核心就在於其屬性和其行為的封包,介面對於具體實現地解耦。
Python物件導向這樣理解更簡單
python雖然是解釋型語言,但從設計之初就已經是一門物件導向的語言,對於python來說一切皆為物件。正因為如此,在python中建立乙個類和物件是很容易的,當然如果習慣面向過程或者函式的寫法也是可以的,python並不做硬性的限制。python的物件導向特徵如下 封裝 物件導向程式設計中的術語物...
理解物件導向
三個基本特徵 封裝,繼承,多型 封裝 將物件的實現細節隱藏起來,然後通過一些公用方法來暴露該物件的功能 使用訪問控制符 private default protected public private 當前類訪問許可權 default 包訪問許可權 protected 包 子類 public 公共訪...
理解物件導向
要理解物件導向。則要知道類和物件的關係。類是具備某些共同特徵的實體的集合 把資料和對資料的操作方法放到一起,相互依存的集合就叫做物件。物件的抽象是類,類的具體化就是物件,也可以說類的例項是物件。比如在現實世界中,人類就是乙個類,具體到實體的某乙個人,這個人就是人類這個類中具體化的乙個物件。而這個人的...