W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
接口可以用來描述一個(gè) C++ 類的行為或功能,但是并不需要對(duì)這個(gè)類進(jìn)行實(shí)現(xiàn)。
C++ 接口是通過抽象類來實(shí)現(xiàn)的,這些抽象類不應(yīng)與數(shù)據(jù)抽象混淆,數(shù)據(jù)抽象的概念:概念結(jié)構(gòu)是對(duì)現(xiàn)實(shí)世界的一種抽象,從實(shí)際的人、物、事和概念中抽取所關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。
一個(gè)抽象類的聲明里至少要有一個(gè)函數(shù)作為純虛函數(shù)。在函數(shù)形參表后面寫上 “= 0” 以指定純虛函數(shù):
class Box
{
public:
// pure virtual function
virtual double getVolume() = 0;
private:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
建立抽象類 (通常被稱為一個(gè)ABC) 的目的是提供一個(gè)適當(dāng)?shù)牟⑶移渌惪梢岳^承的基類。抽象類不能實(shí)例化對(duì)象并且只能作為一個(gè)接口使用。試圖實(shí)例化一個(gè)抽象類的對(duì)象會(huì)導(dǎo)致編譯錯(cuò)誤。
因此,如果一個(gè)抽象類的子類的需要實(shí)例化,它必須實(shí)現(xiàn)所有的虛函數(shù),這意味著它支持抽象類的接口聲明。如果在派生類中未能覆蓋一個(gè)純虛函數(shù),然后試圖實(shí)例化該類的對(duì)象,會(huì)導(dǎo)致一個(gè)編譯錯(cuò)誤。
可用于實(shí)例化對(duì)象的類被稱為具體類。
考慮下面的例子,父類為基類提供了一個(gè)接口來實(shí)現(xiàn)函數(shù) getArea()
:
#include <iostream>
using namespace std;
// Base class
class Shape
{
public:
// pure virtual function providing interface framework.
virtual int getArea() = 0;
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};
// Derived classes
class Rectangle: public Shape
{
public:
int getArea()
{
return (width * height);
}
};
class Triangle: public Shape
{
public:
int getArea()
{
return (width * height)/2;
}
};
int main(void)
{
Rectangle Rect;
Triangle Tri;
Rect.setWidth(5);
Rect.setHeight(7);
// Print the area of the object.
cout << "Total Rectangle area: " << Rect.getArea() << endl;
Tri.setWidth(5);
Tri.setHeight(7);
// Print the area of the object.
cout << "Total Triangle area: " << Tri.getArea() << endl;
return 0;
}
上面的代碼編譯和執(zhí)行后,將產(chǎn)生以下結(jié)果:
Total Rectangle area: 35
Total Triangle area: 17
一個(gè)面向?qū)ο蟮南到y(tǒng)可能使用一個(gè)抽象基類提供一個(gè)普遍的和適合所有的外部應(yīng)用程序的標(biāo)準(zhǔn)化接口。然后, 通過繼承的抽象基類, 形成派生類。
功能(即,公共函數(shù)),即由外部應(yīng)用程序提供的,作為抽象基類里面的純虛函數(shù)。 那些純虛函數(shù)是由派生類實(shí)現(xiàn)的,派生類對(duì)應(yīng)于應(yīng)用的特定類型。
即使在系統(tǒng)已經(jīng)定義之后, 這種架構(gòu)還允許添加新的應(yīng)用程序到系統(tǒng)中。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: