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,不報錯。
3、有new的地方就有物件。方法名可以是中文。類與類之間主要有兩種關係:繼承、組合。乙個類物件可以作為另乙個類的成員。類的屬性、字段可以是另外乙個物件。乙個類呼叫另外乙個類實現的動作就叫組合。if(p1 is japanese) //is是運算結果為bool的運算子,表示p1指向的物件是否是指定的型別。
else if(p1 is chinese)
4、當new乙個子類時,先執行父類,再執行子類。如下面的例子,當b b=new b;時,先執行①,再執行②,即輸出:
構造a構造b
如果a還有父類,則先執行a的父類,再執行a,再執行b,以此類推。
先呼叫父類的建構函式。
子類可以呼叫父類中的public成員,但不能呼叫private成員。如下面的例子中,③不可以呼叫,④可以。
protected 保護類,類似於遺產保護類。自己可以呼叫。子類也可以呼叫,子類的子類等間接子類也可以呼叫。其他類不能呼叫。
5、類的繼承與組合:class a
public a()
private void m1()
publice void m2()
protected void m3()
}class b:a
}class program()
}
繼承方式實現復用。只有父類的大部分行為、狀態都需要的時候才繼承。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...