複用類分為兩種情況
①:在新類中建立舊類的對象。
②:繼承,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();
}
}