天天看點

java思想之複用類 chapter 6

複用類分為兩種情況

①:在新類中建立舊類的對象。

②:繼承,inheritance

對象作為參數傳遞的時候,主要傳遞他們的reference就可以了

primitive類型的對象是沒有reference的,它們是直接定義的。

所有的非primitive對象都會有一個toString();方法。

primitive對象作為成員變量的時候會自動初始化為0,

非primitive對象的reference會自動初始化為null,這樣可以節省不必要的性能開銷。

初始化的時間:

①:定義的時候初始化,在調用構造函數之前就完成了初始化的工作。

②:在構造函數裡初始化

☂:在使用之前初始化,成為lazy initialization。

繼承的使用;;;;

繼承我們在oop語言中很重要,在你建立對象的時候你已經做繼承的工作。

顯示的繼承,隐藏的繼承(基于object)

 基類的初始化

基類會在調用子類的構造函數之前進行初始化工作

example:

public class Animail{

 public Animal(){Sysout.out.println("animal construtor")}

}

public class Bird extends Animal{

public Bird(){Sysout.out.println("Bird construtor")}

}

public class Maqueextends Bird{

public Maque(){Sysout.out.println("Maque construtor")}

public void static main(String [] args){

Maque maque = new Maque();

}

}

println information:

animal construtor

Bird construtor

Maque construtor

帶參數的構造函數

對于子類來說 調用基類的構造函數是首要的任務

如果基類的構造函數是帶有參數的,那麼你在子類中就要顯示的調用基類的構造函數 super(參數);

exmape

public class People{

public People(int i){}

}

public class Manextends People{

public Man(int i ){super(i)}

}

 繼承和合成的集合使用

java編譯器 會驗證基類的初始化,但是不會驗證成員變量的初始化,需要程式員自己注意。

垃圾回收器

java 不知道什麼時候啟動垃圾回收器,如果自己定義的時候 可以定義垃圾回收的順序。

java中的所謂的上傳

examp

public class Animal{

static void getAnimal( Animal a){

}

}

public class Bird{

public staic void main(String [] args){

Bird b = new Bird();

Animal.getAnimal();

}

}