鍍金池/ 教程/ C++/ 類繼承
類的訪問修飾符
D語言運(yùn)算符
D語言邏輯運(yùn)算符
類指針
D語言元組
D語言指針
D語言模塊
D語言sizeof運(yùn)算符
D語言混合類型
D語言封裝
D語言條件編譯
類的靜態(tài)成員
D語言do...while循環(huán)
D語言結(jié)構(gòu)體
重載
D語言字符串-String
D語言決策語句
D語言接口
D語言for循環(huán)
D語言switch語句
D語言關(guān)聯(lián)數(shù)組
D語言范圍
D語言枚舉Enums
契約式編程
D語言并發(fā)
D語言開發(fā)環(huán)境設(shè)置
D語言別名
D語言常值
D語言常量
D語言函數(shù)
D語言if嵌套語句
D語言循環(huán)
D語言概述,D語言是什么?
D語言運(yùn)算符優(yōu)先級(jí)
D語言continue語句
D語言異常處理
D語言break語句
D語言if...else語句
D語言類和對(duì)象
類繼承
D語言字符
D語言教程
D語言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語言抽象類
D語言if語句
D語言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語言類成員函數(shù)
D語言位運(yùn)算符
D語言變量
D語言數(shù)據(jù)類型
D語言文件I/O
D語言數(shù)組
一元運(yùn)算符重載
D語言嵌套switch語句
D語言基本語法
二元運(yùn)算符重載
this指針
D語言聯(lián)合體
D語言模板
D語言嵌套循環(huán)
D語言while循環(huán)

類繼承

在面向?qū)ο缶幊讨幸粋€(gè)最重要的概念就是繼承。繼承允許我們?cè)诹硪粋€(gè)類,這使得它更容易創(chuàng)建和維護(hù)一個(gè)應(yīng)用程序來定義一個(gè)類。這也提供了一個(gè)機(jī)會(huì)重用代碼的功能和快速的實(shí)施時(shí)間。

當(dāng)創(chuàng)建一個(gè)類,而不是完全寫入新的數(shù)據(jù)成員和成員函數(shù),程序員可以指定新的類要繼承現(xiàn)有類的成員。這個(gè)現(xiàn)有的類稱為基類,新類稱為派生類。

繼承的想法實(shí)現(xiàn)是有關(guān)系的。例如,哺乳動(dòng)物IS-A動(dòng)物,狗,哺乳動(dòng)物,因此狗IS-A動(dòng)物,等等。

基類和派生類:

一個(gè)類可以從多個(gè)類中派生的,這意味著它可以繼承數(shù)據(jù)和函數(shù)從多個(gè)基類。要定義一個(gè)派生類中,我們使用一個(gè)類派生列表中指定的基類(ES)。一個(gè)類派生列表名稱的一個(gè)或多個(gè)基類和具有形式:

class derived-class: base-class

考慮一個(gè)基類Shape和它的派生類Rectangle,如下所示:

import std.stdio;

// Base class
class Shape
{
   public:
      void setWidth(int w)
      {
         width = w;
      }
      void setHeight(int h)
      {
         height = h;
      }
   protected:
      int width;
      int height;
}

// Derived class
class Rectangle: Shape
{
   public:
      int getArea()
      {
         return (width * height);
      }
}

void main()
{
   Rectangle Rect = new Rectangle();

   Rect.setWidth(5);
   Rect.setHeight(7);

   // Print the area of the object.
   writeln("Total area: ", Rect.getArea());

}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生以下結(jié)果:

Total area: 35

訪問控制和繼承:

派生類可以訪問它的基類的所有非私有成員。因此,基類成員,不應(yīng)該訪問的派生類的成員函數(shù)應(yīng)在基類中聲明為private。

派生類繼承了所有基類方法有以下例外:

  • 構(gòu)造函數(shù),析構(gòu)函數(shù)和基類的拷貝構(gòu)造函數(shù)。

  • 基類的重載運(yùn)算符。

多層次繼承

繼承可以是多級(jí)的,如下面的例子。

import std.stdio;

// Base class
class Shape
{
   public:
      void setWidth(int w)
      {
         width = w;
      }
      void setHeight(int h)
      {
         height = h;
      }
   protected:
      int width;
      int height;
}

// Derived class
class Rectangle: Shape
{
   public:
      int getArea()
      {
         return (width * height);
      }
}

class Square: Rectangle
{
   this(int side)
   {
      this.setWidth(side);
      this.setHeight(side);
   }
}

void main()
{
   Square square = new Square(13);

   // Print the area of the object.
   writeln("Total area: ", square.getArea());

}

讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:

Total area: 169