公司投資沒有了,人們陸續都離職了,正好可以抽出個時間看看書,C++ Primer第四版,以前粗略的讀過一遍,但是一直感覺好多地方就那麼過去了,讀書這個事情就是這樣,每讀一遍,都能有許多新的感悟,所以纔有那句溫故而知新,我是一個不愛讀書的人,但是我還是建議大家多多讀書,讀書百遍,其義自現。好了,感覺再說廢話就多了,我們開始吧。
面向對象的概述
面向對象編程總是基於三個概念:抽象,繼承,多態。不同的語言或者文章可能對這三個概念的叫法不一樣,但是講解的都是一樣的。抽象,這個相信大家已經聽過很多種版本的解釋了,這裏我想用幾個例子來闡述一下我的認識。我認爲抽象,就是一些特性的集合,他不是具體的東西,他是一類具有相同特性的東西的集合或者說是抽離,好了,越說越離譜了,我們舉個例子。首先舉得例子就是汽車,我認爲汽車就是一種抽象,那就有同學問了,汽車怎麼是抽象啊,滿大街都是汽車,照你這麼說,都是抽象了。
那好,我們說什麼是汽車,
1.有輪胎,一般是四個,但是也有三個的或者六個的等等。
2.有發動機,當然現在有電動汽車,我們就認爲馬達是發動機。
3.需要燃料,汽油,柴油,或者電,都是能源。
4.有外殼,汽車都是有外殼的,如果沒有,那是卡丁車了。
5.有品牌,比如奔馳,寶馬,福特,奇瑞,長城等等。
那麼根據這個5個特性,我們是不是可以抽象出一個汽車的類呢,我們就可以這麼寫。
class Car
{
public:
int _tyre; //輪胎數量
int _engine; //發動機型號
int _fuel; //燃料 1汽油 2柴油 3電 4其他
int _shell; //外殼類型 我們這裏相區分外形 1轎車 2越野車 3皮卡
std::string _trademark; //品牌 寶馬,奔馳,福特,奇瑞,長城等等
};
Car *bmw5 = new Car();
bmw5->_tyre = 4; //四個輪胎
bmw5->_engine = 0; //我也不知道
bmw5->_fuel = 1; //97號汽油
bmw5->_shell = 1; //轎車
bmw5->_trademark = "寶馬";
這樣一輛具體的車就出來了,寶馬5系,這就是類的實例化。怎麼樣,抽象是不是很簡單。當然如果你需要知道車的顏色,那麼你就再加一個屬性 int _color;就ok了。總之抽象的屬性,還是要看需求,也就是你需要知道哪些屬性。 void run()
{
printf("%s","汽車得跑起來纔是汽車啊");
}
void stop()
{
printf("%s","記住,紅燈了,要剎車");
}