复用类分为两种情况
①:在新类中创建旧类的对象。
②:继承,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();
}
}