物件導向之繼承(類與類之間的關係)

2022-05-05 13:36:07 字數 3729 閱讀 2436

繼承:類與類之間的關係(父子關係)

子類繼承父類,那麼子類就擁有父類的公共屬性和方法

乙個子類只能繼承乙個父類,乙個父類可以有好多子類

子類物件可以直接轉成父類,但父類只能轉回對應的子類

如果子類轉成父類之後,父類物件就不能點出子類裡面的屬性和方法使用了

c#允許乙個類繼承其他類的屬性和方法,別繼承的類稱為父類,繼承的類稱為派生類或子類。子類不僅僅可以繼承基類的屬性和方法,還可以根據需要定義新的屬性和方法,增加新的功能,這樣可是使用者重用基類的**,專注於子類的新**,提高類的可重用性,繼承的好處是能共享**,繼承後,父類的所有的字段和方法都將存在於子類中,每乙個子類都具有父類的非私有特性。

object類是所有類的祖先(預設的)

c#語言中子類僅能派生於乙個父類。

1.繼承的定義

如果要宣告乙個類派生於另乙個類,可以使用下面的語法

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

//派生類的成員

其中:修飾符:可選用poublic    internal      absrtract     sealed   new     private    protected等修飾符,根據需要確定。

派生類名:必須是乙個有效的c#識別符號。一般採用pascal大小寫命名規則,單詞的第乙個字母大寫。

基類名:被繼承的類的名。

類體:用於定義派生類的成員。

繼承意味著乙個類隱藏了除了建構函式和析構函式的基類的所有成員。

繼承應該注意的幾點

《1》繼承是可以傳遞的。

《2》派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去基類的成員的定義。

《3》析構函式和建構函式不能參與被繼承,除此之外的其他任何成員都能被繼承。

《4》派生類如果定義了與繼承而來的成員同名的新成員,都將覆蓋以繼承的成員。但這並不是在派生類中刪除了這些成員,而只是不能再訪問這些成員。

《5》類可以定義虛方法、虛屬性以及虛索引指示器,他的派生類都能夠過載這些成員。從而實現類的多型性。

《6》派生類的成員有兩個成員:乙個是從基類中繼承來的,另乙個是在派生類中重新定義的。

案例如下

using  system;

namespace  example1

public  void  printinfo()

",name);

console.writeline("身份證號:",identitycard);

}

}

//定義派生類

public   class  employee:person

public    void  printemployeeinfo()      //雇員資訊列印

",name);

console.writeline("身份證號:",identitycard);

console.writeline("雇員 :",id);

}

}

class  class1

}

}

程式執行結果:

呼叫printemployeeinfo()方法

姓名:linming

身份證號:  370321012950020

呼叫printinfo()方法

姓名:liming

身份證號: 370321012950020

解析程式:

《1》這裡面要注意一點,基類中的tel定義的是私有成員,在我們繼承的時候是可以繼承的,但是我們這裡是不能訪問的。

《2》當我們例項化子類的時候我們就呼叫基類,所以初始化的同時也對基類進行了初始化。

派生類的建構函式

定義派生類的建構函式

[修飾符]   派生類類名(引數列表1):base(引數2)

修飾符:可以是public    pirvate  static

派生類名:建構函式所在的類名

引數列表1:指明引數的名稱和型別,包含派生類新增引數及基類中的引數,也可以無引數。

base:基類關鍵字表示基類,關鍵字base為呼叫基類成員提供了乙個簡便的方法,呼叫基類成員的格式為base.成員名。

當我們例項化時就不需要帶上base這個關鍵字了。

使用new修飾符隱藏基類的成員

使用new修飾符可以顯示隱藏從基類繼承的成員,這樣在使用派生類的物件的方法時,呼叫的是派生類重寫的與派生類的新方法。

例題public   class  mybase

public   int    x;

public  void   myvoke()

console.writeline("this   is    mybase");

在派生中使用myvoke名稱宣告成員會隱藏基類中的myvoke方法,即:

public  class  myderived:mybase

}

這樣我們就隱藏基類的方法了,但我們呼叫基類的方法的時候就採用:base.基類隱藏的方法;

密封類和密封方法

但我們需要把乙個單獨的類分開,來實現莫中特定的功能的時候,而不希望他有所繼承和重寫,我們就需要將這個類密封起來,

命令格式如下:

sealed   class   finalclass

抽象類和抽象函式

c#允許把類和函式宣告為abstract,抽象類不能例項化,而抽象類函式沒有執行**,函式括號後跟乙個分號,必須在非抽象類中重寫,如果類包含抽象函式,該類也是抽象類的,必須宣告為抽象的:

abstract   class   building

類與類之間的關係之 繼承

一 類與類之間的三大關係 1 組合 乙個類是另乙個類的一部分 class a 2 乙個類的方法是另乙個類方法的子集,也就是說這個類它本身是不進行任何的操作,只是呼叫另乙個類來幫它實現它想做的事情。3 繼承 乙個類是另乙個類的一種 class parent class child public par...

物件導向中類與類之間的關係

物件導向中類與類之間的關係 1.繼承 單重繼承 多層繼承 多層繼承也就是子繼承父,下個類繼承子,一對多的關係 2.依賴 public class test02 3.聚合 組合 主要體現整體與部分之間的關係。描述方式與關聯關係一樣,都是用成員變數來描述的。例如 乙個user物件包含以下屬性,姓名,id...

物件導向 類和類之間的關係說明

依賴關係 dependency 物件之間最弱的一種關聯方式,是臨時性的關聯。中 中一般指由區域性變數 函式引數 返回值建立的對於其他物件的呼叫關係。class a 關聯關係 association class employee class computer class husband class w...