对象构造
- 整理笔记
4.6对象构造
4.6.1 重载.
1. 方法签名不同
当方法名相同,参数却不同,这就表示签名不同. 可以实现继承等
2. 重载
当方法名相同,参数却不同,表示签名不同. 同时也产生了重载. java允许重载任何方法,而不只是构造器方法。
返回类型不是方法签名的一部分,也就是说不能有两个名字相同、参数类型也相同却返回不同类型值的方法。
4.6.2 默认域初始化
如果在构造器时,没有赋予显示初值,就会自动为默认初值,null,0,false
4.6.3无参构造器
如果在编写一个类时没有编写构造器,那么系统就会提供- -个无参数构造器。且自动默认初值,实例域中的数值型为0、布尔型数据为false.对象变量为null。
什么是构造器?
方法名和类名相同.
4.6.4显示域初始化
由于类构造器可重载,可在实例域赋初值.
比如 如下代码和注释
public class Person{
头的数="1"; //这就类的显示域初始化
public Person(){
name=""; //这是构造器的显示域初始化
zubashu=1;
}
}
4.6.5参数名
public Person(int atoudeshu int bheight){
this.toudeshu;
this.height;
}
这样写参数名 比只写一个 a,b 跟容易被别人理解!!!
4.6.6调用另一构造器
调用另一个构造器关键字this引用方法的隐式参数。然而如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器。
this(….)方法必须出现在构造器中的第一行,用来调用其他重载构造器。调用时参数必须严格匹配。~
这样对公共的构造器代码部分只编写一次就行,实现了代码的复用.
比如
public class Teacher {
private String name;
}
public Teacher(String name){
this(name,"男"); //必须放在第一行!!!
System.out.println("必须放在第一行!!!!");
}
4.6.7初始化块
三种初始化数据域的方法:
- 在构造器中设置值
- 在声明中赋值实际上
- 初始化
*在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。
例如:
4.6.8对象析构与finalize方法
-
因为java有垃圾回收器,不需要人工回收内存 ,所以没有对象析构器(C++有).
当然,某些对象使用了内存之外的其他资源,例如,文件或使用了系统资源的另一个对象的资源句柄。在这种情况下,可以将不需要的资源回收.
可以为任何一个类添加finalize方法。finalize方法调用时间: 将在垃圾回收器清除对象之前.
在实际应用中,不要依赖于使用finalize方法回收任何短缺的资源,这是因为很难知道这个方法什么时候才能够调用。