您的位置:首页 > 编程语言 > Java开发

Java学习笔记【对象构造】

2015-09-24 16:53 603 查看

1、重载

通过参数类型与特定方法调用所使用的值类型进行匹配,挑选相应的方法。

2、默认域初始化

如果在构造器中没有显式地给域赋予初值,那么就会被自动地赋为默认值:

其中数值为0 、布尔值为false、 对象引用为null。

3、无参数构造器

例如,以下是Employee类的无参数构造函数:

public Employee()
{
name = "";
salary = 0;
hireDay = new Date();
}

若写一个类时,未写构造器,那么系统提供一个无参数构造器。这个构造器将所有的实例域设置为默认值,即:数值为0 、布尔值为false、 对象引用为null。

若类中至少一个构造器,但是没有提供无参数构造器,则在构造时不加参数将被视为不合法。

4、显式域初始化

可以在类定义中,直接将一个值赋给任何域。例如:

class Employee
{
private String name = "";
...
}


初始值不一定是常量,可以调用方法对初始值进行初始化。每个Employee类中的雇员都有个id域,可以这样初始化:

class Employee
{
private static int nextId;
private int id = assignId();
...
private static int assignId()
{
int r = nextId;
nextId++;
return r;
}
...
}


5、参数名

常用参数名设置技巧:
public Employee(String name, double salary)
{
this.name = name;
this.salary = salary;
}


6、调用另一个构造器

关键字this引用方法的隐式参数。

如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器。典型实例:
public Employee(double s)
{
this("Employee #" + nextId, s);
nextId++;
}
调用new Employee(60000)时,Employee(double)构造器将调用Employee(String, double)构造器。

可运行程序完整示例:
public class Employee
{
public static int  nextId = 1;
private String id = "";
private double salary = 0;

public static void main(String[] args)
{
Employee CEO = new Employee(600000);
System.out.print("员工编号:" + CEO.id + "  ");
System.out.println("薪资:" + CEO.salary);

Employee CTO = new Employee(500000);
System.out.print("员工编号:" + CTO.id + "  ");
System.out.println("薪资:" + CTO.salary);

Employee SE = new Employee(3000);
System.out.print("员工编号:" + SE.id + "  ");
System.out.println("薪资:" + SE.salary);

}

public Employee(double s)
{
this("ZTE000000"+ nextId, s);   //调用Employee(String str, double s)
nextId++;
}

public Employee(String str, double s)
{
this.id  = str;
this.salary = s;
}

}
运行结果:
员工编号:ZTE0000001  薪资:600000.0
员工编号:ZTE0000002  薪资:500000.0
员工编号:ZTE0000003  薪资:3000.0


7、初始化块
代码实例:
class Employee
{
private static in nextId;

private int id;
//块1
{
id = nextId;
nextId ++;
}
//构造器1
public Employ(String ss){}

//构造器2
public Employee(int ttt){}
...
}


无论使用哪个构造器构造对象,块1总被执行,且执行顺序:先运行初始化块1,然后再运行构造器主体部分。

8、对象析构与finalize方法

Java有自动的垃圾回收器,不需要人工回收内存,所以Java不支持析构器。

可以为任何一个类添加finalize方法。finalize方法将在垃圾回收器清除对象之前调用。

实际应用中,不要依赖于使用finalize方法回收任何短缺的资源,这是因为很难知道这个方法什么时候才能调用。

某个资源需要在使用完毕后立刻被关闭,那么就需要人工来管理。对象用完时,可以应用一个close方法来完成相应的清理操作。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: