C 學習筆記 (17)繼承

2021-10-02 10:20:59 字數 4245 閱讀 9637

類的繼承或類的派生

把類按照其之間的關係組成的層次結構,稱之為類的繼承或類的派生。

基類和派生類

水果是一種基類,桃、梨、蘋果是派生類…派生類可以繼承基類裡的屬性、欄位和方法,然後加上自己特殊的屬性、欄位和方法。

派生的語法格式

類修飾符 class 派生類名:基類名

訪問控制問題public 都可以訪問使用。

private 派生類可以繼承基類的private成員,但是無法訪問private成員,private只能在基類中使用。

protected 保護成員不能在類外被類物件訪問,這一點與私有成員類似,保護成員對類的使用者而言是私有的,但是保護成員可以被派生類的方法和屬性引用,這一點與私有成員是不同的。

建構函式

派生類構造方法的宣告格式

public 派生類名(引數總表)

:base

(引數

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

//例:複數類

//構建乙個複數類

//實現複數的加減乘除

}public

class

complex

public

complex

(double real,

double image)

//建構函式2:兩個引數

public

void

set(

double real,

double image)

//set函式用於之後可以改變實部和虛部的值

public

double

getreal()

//得到實部和虛部的值

public

double

getimage()

public

complex

add(

complex x)

//加法第一種方法:自己和傳進來的複數相加

public

static

complex

add(

complex x1,

complex x2)

//加法第二種方法:兩個複數相加

//烏龜類

public

intgetposition()

//得到當前的位置

return t;}}

class

hare

//兔子的規則

public

intgetposition()

//得到當前的位置

return h;}}

class

running

if(tpos >70)

else

}private

void

display

(int tpos,

int hpos)

if(tpos == hpos)

else

//如果兩者位置不一樣,則顯示兩者位置

dis[69]

='l'

; console.

writeline

(new

string

(dis));

//顯示}}

}

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

}public

class

point

//建立乙個點類

public

point

(double x1,

double y1)

public

void

show()

y= "

, x, y);}

}public

class

circle

:point

//繼承的寫法,circle後面空格冒號,加上繼承的基類名字

public

circle

(double x1,

double y1,

double r1)

:base

(x1,y1)

//建構函式2:需要在後面加上base(基類的引數)

public

double

area()

//計算面積

public

void

show2()

,", r);}

}}

建立乙個繼承層次來表示不同型別的包裹,將package類作為基類,將threedaypackage類和overnightpackage類作為它的派生類,基類package包含發件人和收件人的名字、位址及包裹重量,單位克,以及包裹投遞標準費用,單位是克/元,這些變數是protected。

//包裹投遞

namespace example04

}class

package

protected

string recivername

protected

string address

protected

decimal weight;

protected

decimal weight

set}

protected

decimal fee;

protected

decimal fee

set}

//建構函式

public

package

(string sn,

string rn,

string

add,

decimal w,

decimal f)

//計算費用

public

decimal

calculate()

}class

threedaypackage

:package

set}

public

threedaypackage

(string sn,

string rn,

string

add,

decimal w,

decimal f,

decimal ex)

:base

(sn,rn,

add,w,f)

//繼承基類的引數,看基類建構函式中的引數個數

public

newdecimal

calculate()

}}

C 學習筆記17 繼承

繼承 物件導向中的繼承指類之間的父子關係 子類擁有父類的所有成員變數和成員函式 子類就是一種特殊的父類 子類物件可以當作父類物件使用 子類可以擁有父類沒有的方法和屬性 繼承時候的訪問級別設定會影響到成員的訪問級別 class child parent 等價於class child private p...

學習筆記17 Python 繼承

class 類名 父類名 class animal def eat self 在類中定義方法時,若該方法不涉及對屬性的操作 print 吃 pycharm會認為該方法是乙個靜態方法,而不是類方法 defdrink self print 喝 def run self print 跑 def sleep...

c 學習筆記(17)

類模板中的成員函式建立時機 類模板中成員函式和普通類中成員函式建立時機是有區別的 普通類中的成員函式一開始就可以建立 類模板中的成員函式在呼叫時才建立 template class t class myclass void func2 因為在呼叫之前,無法確定obj的資料型別,所以成員函式不會被建立...