1、組合與繼承
2、繼承會得到基類的所有字段和方法
新類是基類的的一種類型
3、被繼承的類中,一般將數據成員指定爲private,將方法指爲public。
4、super
super.scrub()將調用基版本的scrub方法
5、用基類構造器初始化基類子對象
創建子類對象時,先調用基類構造器,再調用導出類的構造器
6、帶參數的基類構造器
class Game{
Game(int i){
...........
}
}
class BoardGame extends Game{
BoardGame( ){
super(i); //調用基類構造器
..........
}
}
7、is a的關係用繼承表達,has a的關係用組合來表達
8、組合的例子P154
Car has-a Wheel,Door。成員對象可爲public
9、protected:對於任何繼承於基類的導出類或同一包內的類來說,基類是可以訪問的
10、如果需要向上轉型,用繼承。否則用組合
class Instrument{
public play(){};
static void tune (Instrument i){
i.play;
}
}
</pre><pre name="code" class="java">public class Wind extends Instrument{ //需要向上轉型,用繼承
public static void main(String[] args){
Wind flute =new Wind();
Instrument.tune(flute) //用了向上轉型
}
}
11、final:
對於基本類型,final使數值恆定不變
對於對象引用,final使引用恆定不變,引用只能指向一個對象,但對象自身是可以被修改的
12、final方法:可防止繼承類修改它的含義。
private方法都是隱式的爲final的
13、final類:表明你不打算繼承繼承該類
14、繼承的初始化:先初始化基類的static,再初始化導出類的static。
類加載完畢後就可以創建對象了。首先對象中基本類型數據設爲缺省值,對象引用爲null。然後調用基類的構造器。
再初始化實例變量,最後執行子類構造器。