C 物件導向 7 類的繼承和組合

2021-09-26 15:38:21 字數 2082 閱讀 4778

1、定義類的時候不指定父類,則父類是object類。object類是任何類的直接或者間接父類。所有類都是object的子類。

2、例1:

class  person

public int age

}

public class chinese:person

public void kongfu()

}chinese p1 = new chinese();

p1.name="李雷";

p1.hukou="北京市朝陽區";

p1.sayhello();

p1.kongfu();

class  chinese:person   //繼承,:後為父類名

class japanese:person

在別的類中呼叫:

chinese  c=new  chinese();  //擁有person類chinese類中的所有public要素。

japanese  j=new  japanese();  //擁有person類japanese類中的所有public要素。

父類的變數可以指向子類的變數。如:

person  p=c;  //c從變數看是乙個chinese,所以可以把乙個person標籤貼到c上。
子類的變數不能直接指向父類的變數,必須要進行顯示轉換。如:

chinese  c2=p;  //錯誤。p從變數看是乙個person,所以不可以把乙個chinese標籤直接貼到c上。

chinese c2=(chinese)p; //正確。如果轉換失敗,則丟擲異常。

chinese c3=p as chinese; //跟上一行的效果相同,也是顯式轉換。如果失敗,結果是null,不報錯。

if(p1  is  japanese)  //is是運算結果為bool的運算子,表示p1指向的物件是否是指定的型別。

else if(p1 is chinese)

3、有new的地方就有物件。方法名可以是中文。類與類之間主要有兩種關係:繼承、組合。乙個類物件可以作為另乙個類的成員。類的屬性、字段可以是另外乙個物件。乙個類呼叫另外乙個類實現的動作就叫組合。

4、當new乙個子類時,先執行父類,再執行子類。如下面的例子,當b  b=new  b;時,先執行①,再執行②,即輸出:

構造a構造b

如果a還有父類,則先執行a的父類,再執行a,再執行b,以此類推。

先呼叫父類的建構函式。

子類可以呼叫父類中的public成員,但不能呼叫private成員。如下面的例子中,③不可以呼叫,④可以。

protected  保護類,類似於遺產保護類。自己可以呼叫。子類也可以呼叫,子類的子類等間接子類也可以呼叫。其他類不能呼叫

class  a

public a()

private void m1()

publice void m2()

protected void m3()

}class b:a

}class program()

}

5、類的繼承與組合:

class  ligang

public 掀攤子()

}

繼承方式實現復用。只有父類的大部分行為、狀態都需要的時候才繼承。

class  lrj:ligang

組合方式實現復用。組合方式沒有繼承的包袱,用的更多。

class  tufei

public void 打人()

}

呼叫部分的**:

tufei  t=new  tufei();

t.lg=new ligang();

t.打人();

物件導向 類組合還是類繼承?

類組 合 還 是 類繼 承?假設 我 們 有一 張 表a,有多個畫面用到。比如10個畫面用到。由於每個畫面功能不一 樣 但a表的大多數字段所以欄位都是共用的。這 種情況下,怎麼寫自己的info 類 呢?大概有3種方案 方案1 每個畫面都寫乙個自己的info類 方案2 先寫乙個表a的info類 然後每...

物件導向 類組合還是類繼承?

類組合還 是類繼承?假設我 們有一張表a,有多個畫面用到。比如10個畫面用到。由於每個畫面功能不一 樣,但a表的大多數字段所以欄位都是共用的。這種情況下,怎麼寫自己的info 類呢?大概有3種方案 方案1 每個畫面都寫乙個自己的info類 方案2 先寫乙個表a的info類 然後每個畫面的info 類...

C 物件導向(二)繼承和組合

復用 的方式 繼承和組合 繼承 復用 的一種方式,可以復用 或概念。組合 復用 不能復用概念。在c 中,object類是一切類的直接父類或間接父類。子類擁有所有父類的非私有成員。建構函式不能繼承 建立子類時,自動呼叫父類的建構函式,並且父類中的先執行 概念復用 dog dog new dog ani...