淺談面向對象

1、淺談面向對象

1.1、說在前面的話

這篇文章是我多年前在網上看到的,因此我標註爲轉載,原文我已經找不到鏈接了,但是這篇文章我覺得對於初學者而言是非常有幫助的。所以發出來供大家分享一下

1.2、引言

如果你百科或者wiki一下,倒是能翻出一大堆來。如果你嫌這些答案不夠深沉,不夠裝逼,甚至還可以知乎一下云云。但是,你有沒有想過,我們學習程序設計的目的是爲了什麼?

從正式開始接觸計算機到現在也已經有多年了,我再也翻不下去一堆堆厚重的書籍和資料,原因在於它們只是爲了寫更多的文字,卻很少能夠把一個簡單的概念解釋清楚。

我很欣賞一個程序員的本質就是單純,老老實實寫寫代碼本身就是一件很開心的事了(對此,我深信Java讓簡單主義者開心不起來),而不是像個學術研究者一樣,捧着一堆文獻來研究,甚至還要把自己的思維裝訂成冊纔好。

簡單說,我能夠最快掌握一門技術,然後寫出自己想要實現的東西,這便是目的(當然,也有以錢途爲目的的人)。

1.3、什麼是面向對象

很多人會說面向對象是:封裝繼承多態,或是balabala……

但是,你真的瞭解面向對象的本質了嗎?請確定你真的瞭解了,而不是爲了學習一門語言而不得不硬着頭皮接觸面向對象。爲了不讓冰冷的技術詞彙產生距離感,我用女媧造人這個例子來說明面向對象是個什麼東西。

首先,盤古開天闢地……(此處省略2000字)女媧一個人實在悶得慌(這也難怪,是個人都會寂寞,除了默默忍受寂寞的程序員們 ...),尼瑪就突發奇想,搞出了個造人大計!(如果她知道現在的人是這副德行,尼瑪肯定後悔得像買了切糕一般)。

但是,人是如何造成的呢?再牛逼的女媧也像從前小時候玩橡皮泥的我們一樣,搓來搓去沒個名堂,最終還是需要個模板,是個人都知道,這個模板就是她自己。

關鍵點1:面向對象的基本設計原則就是需要一個模板(或稱爲藍圖),在程序設計語言裏,我們把這個模板稱爲類。

好了,有了一個模板,女媧就可以對着模板來造人了,造出的人也就是一個模板(類)的對象。我們知道,人有一些基本特徵:一個頭,兩隻眼睛,雙手雙腳。此外,人還有一些基本行爲:吃喝嫖賭抽。

關鍵點2:此處的基本特徵就是一個類的屬性,基本行爲就是類的方法。 

有人問了,爲什麼不需要皮膚,指甲等屬性,或奔跑、磕頭等行爲?道理很簡單,我只需要知道有用信息,如同有主機、顯示器,鼠標鍵盤,可玩遊戲我便能明白這是一臺電腦。

模板有了,一些基本的構造條件有了,剩下考慮的就是量產了,所謂的量產也就是生產類的對象,造出千千萬萬個人(真偉大~!)。

其實,人還有個不願意公開承認的特性,就是愛“犯賤”。甚至以挖苦別人,或者對他人身體造成傷害爲樂趣。爲了避免一些嚴重傷害,我們只能把危機生命的心臟等器官放到身體內部了。

關鍵點3:把基本特徵(屬性)保護好,防止他人隨意踐踏,這叫做封裝。

當然,隨着當事者所處的環境不同,保護措施也不一樣,正如同小孩想滑旱冰就需要護膝是一樣的道理。在類中,我們要依照自己的經驗完善好封裝這一概念。

人活在這世上,是不公平的,有些人天生就是高富帥,富二代,官二代,why?因爲他們有個牛逼的爹。而還有些人,卻生的一副挫樣

關鍵點4:類似與這種行爲,我們叫做繼承。一個子對象,是具有父類特徵和行爲的,當然你可以通過各種方式轉變。(好好寫代碼,終成高富帥)

人有了,人造人這種令人難堪的事也發生了。但是卻還出現了男人和女人的區別,這叫人如何是好。因爲有了男女,不僅讓世界變得和諧了,卻也……哎,凡事都有兩面性嘛。

我們可以說,一個男人是一個人,也可以說一個女人是一個人。但男女不論從某某結構還是××來說都是有所差別的,但基本特徵不變。

關鍵點5:都有了上層的基礎概念,而存在具體的細節實現不同,這種行爲我們管它叫做多態。

1.4、結束語

我不得不說,我要寫完了,一行代碼都沒有。對於新手而言,希望看到更多的並不是代碼,而是一種思想上的東西,希望此篇文章能夠對你帶來幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章