菜鳥教程(面對物件)2

2021-08-17 23:58:07 字數 2939 閱讀 7614

一、繼承

每個類都有自己的資料成員和函式,但有些類之間的資料成員和函式相同,直接指定新建的類繼承了乙個已有的類即可。

已有的類稱為基類,新建的類稱為派生類。

#include using namespace std;

//基類shape

class shape

void setheight(int h)

protected://受保護的成員

int width;

int height;

};//基類paintcost

class paintcost

};//派生類rectangle

class rectangle : public shape, public paintcost //派生類rectangle

};int main(void)

二、函式過載與運算子過載

函式過載:同名函式,但形式引數(引數個數、型別、順序)必須不同,不能僅通過返回型別的不同過載函式。

#include using namespace std;

class printdata

void print(double f)

void print(string b) };

int main()

運載符過載:帶有特殊名稱的函式,函式名由關鍵字operator和其後要過載的運算子符號構成。

出現原因:c++預定義中的運算子的操作物件只侷限於基本的內建資料型別,但是對於我們自定義的型別(類)是沒有辦法操作的。

box operator+(const box&, const box&);
宣告加法運算子用於把兩個box物件相加。

一元運算子過載:只對乙個運算元進行操作

#include using namespace std;

class distance

distance(int f, int i)

//顯示距離的方法

void displaydistance()

//過載運算子(-)

distance operator-() };

int main()

二元運算子需要兩個引數,平常使用的加運算子( + )、減運算子( - )、乘運算子( * )和除運算子( / )都屬於二元運算子

#include using namespace std;

class box

void setlength(double len)//沒有輸出

void setbreadth(double bre)

void setheight(double hei)

//過載+運算子,把兩個物件相加

box operator+(const box& b)

};int main()

關係運算子過載( < 、 > 、 <= 、 >= 、 == 等等)

//過載小於運算子

bool operator <(const distance& d)

if (feet == d, feet&&inches < d.inches)

return false;

}

三、多型

什麼是多型:

通過繼承同乙個基類,產生不同的派生類,乙個介面多種方法。

問題:執行使用同乙個成員名來呼叫類物件的成員函式,會呼叫哪個物件的成員函式呢?

多型作用:將基類指標或基類引用指向派生類物件。呼叫成員函式時,根據呼叫函式物件的型別執行不同的函式。

多型分類:

1靜態分類:編譯時的多型,通過函式過載或者運算子過載實現

2動態多型:執行時的多型,通過虛函式與基類指標共同作用實現。

虛函式 是在基類中使用關鍵字virtual 宣告的函式。在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式。

#include using namespace std;

//基類

class shape

virtual int area()//虛函式virtual 編譯器看的是指標的內容,而不是它的型別 };

//派生類1,繼承rectangle

class rectangle : public shape

int area() };

//派生類2,繼承********

class ******** :public shape

int area() };

int main()

形成多型必須具備三個條件:

1、必須存在繼承關係;

2、繼承關係必須有同名虛函式(其中虛函式是在基類中使用關鍵字virtual宣告的函式,在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式);

3、存在基類型別的指標或者引用,通過該指標或引用呼叫虛函式;

四、資料抽象

資料抽象是指,只向外界提供關鍵資訊,並隱藏其後台的實現細節,即只表現必要的資訊而不呈現細節。

#include using namespace std;

class adder

//對外的介面

void addnum(int number)

//對外的介面

int gettotal()

private:

int total;

};int main()

面對物件程式設計2 繼承

oop語言的特徵 繼承 封裝 多型 1,封裝 通過private關鍵字來修飾成員方法或屬性的一種行為。意義 1,類的實現者 2,類的呼叫者,方便,只需要呼叫就好了。2,繼承 直接上 package com.extendseg created with intellij idea.descriptio...

mysql面對物件 面對物件資料庫

物件導向的方式訪問資料庫 造物件 db new mysqli localhost root 123 mydb 判斷連線是否出錯 if mysqli connect error mysqli connect error or die 連線失敗!寫sql語句 sql insert into info v...

面對物件 多型

1,多型 封裝1,私有化 保證資料安全性 2,抽取成方法 提高 的復用性和可維護性 繼承可以讓類跟類之間產生關係 可以抽取重複的 到父類中。是多型的前提 多型多種形態 概述 student s new student 真正的物件 new student 左邊的s 僅僅是乙個接收變數而已。因為要方便以...