類的繼承或類的派生
把類按照其之間的關係組成的層次結構,稱之為類的繼承或類的派生。
基類和派生類
水果是一種基類,桃、梨、蘋果是派生類…派生類可以繼承基類裡的屬性、欄位和方法,然後加上自己特殊的屬性、欄位和方法。
派生的語法格式
類修飾符 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的資料型別,所以成員函式不會被建立...