在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C/ 接口 (抽象類)
動(dòng)態(tài)內(nèi)存
類和對象
接口 (抽象類)
結(jié)構(gòu)體
循環(huán)的類型
函數(shù)
數(shù)字
日期和時(shí)間
基本語法
多態(tài)
數(shù)據(jù)抽象
注釋
命名空間
字符串
預(yù)處理器
決策語句
修飾符的類型
鍙橀噺綾誨瀷
基本輸入輸出
操作符
數(shù)組
模板
多線程
繼承
Web 編程
信號處理
指針
存儲類型
概述
引用
常量
異常處理
開發(fā)環(huán)境
重載
變量作用域
數(shù)據(jù)類型
數(shù)據(jù)封裝
文件和流

接口 (抽象類)

接口可以用來描述一個(gè) C++ 類的行為或功能,但是并不需要對這個(gè)類進(jìn)行實(shí)現(xiàn)。

C++ 接口是通過抽象類來實(shí)現(xiàn)的,這些抽象類不應(yīng)與數(shù)據(jù)抽象混淆,數(shù)據(jù)抽象的概念:概念結(jié)構(gòu)是對現(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í)例化對象并且只能作為一個(gè)接口使用。試圖實(shí)例化一個(gè)抽象類的對象會導(dǎo)致編譯錯(cuò)誤。

因此,如果一個(gè)抽象類的子類的需要實(shí)例化,它必須實(shí)現(xiàn)所有的虛函數(shù),這意味著它支持抽象類的接口聲明。如果在派生類中未能覆蓋一個(gè)純虛函數(shù),然后試圖實(shí)例化該類的對象,會導(dǎo)致一個(gè)編譯錯(cuò)誤。

可用于實(shí)例化對象的類被稱為具體類。

抽象類樣例

考慮下面的例子,父類為基類提供了一個(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

設(shè)計(jì)策略

一個(gè)面向?qū)ο蟮南到y(tǒng)可能使用一個(gè)抽象基類提供一個(gè)普遍的和適合所有的外部應(yīng)用程序的標(biāo)準(zhǔn)化接口。然后, 通過繼承的抽象基類, 形成派生類。

功能(即,公共函數(shù)),即由外部應(yīng)用程序提供的,作為抽象基類里面的純虛函數(shù)。 那些純虛函數(shù)是由派生類實(shí)現(xiàn)的,派生類對應(yīng)于應(yīng)用的特定類型。

即使在系統(tǒng)已經(jīng)定義之后, 這種架構(gòu)還允許添加新的應(yīng)用程序到系統(tǒng)中。

上一篇:基本語法下一篇:注釋