小弟我的java学习笔记(5)关于对象构造

我的java学习笔记(5)关于对象构造

关于对象构造

1.如果多个方法有相同的名字、不同的参数,便产生了重载。寻找重载函数的过程称作重载解析。

2.编译器找不到匹配的参数,或者找出多个可能的匹配,就会参数编译时错误。

3.在构造器中没有显示地给域赋予初值,那么就会被自动地赋为默认值。

4.在编写一个类时,没有编写构造器,那么系统就会提供一个无参数构造器。这个构造器将所有的实例域设置为一个默认值。

5.类中提供了至少一个构造器,但是没有提供无惨的构造器,则在构造对象时如果没有提供参数就会被视为不合法。

6.在执行构造函数之前先执行赋值操作,这样也可通过赋值操作初始化实体域。

7.构造器的第一个语句形如this(),这个构造器将调用同一个类的另一个构造器。

8.还可以通过初始化块的方式来初始化实体域。

9.所以初始化一个对象调用构造器的步骤是: 

   A.所有数据域被初始化为默认值

   B.按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块

   C.如果构造器第一行调用了第二个构造器,则执行第二个构造器主体

   D.执行这个构造器的主体


实例程序:


import java.util.*;
public class test {
	public static void main(String[] args)
	{
		Employee[] s = new Employee[3];
		
		s[0] = new Employee("a",500);
		s[1] = new Employee(600);
		s[2] = new Employee();
		
		for(Employee e : s)
		{
			System.out.println("name = " + e.getName() + ", id = " + e.getId() + " salary =" + e.getSalary());
		}
		
	}
}

class Employee
{
	private static int nextId;
	private int id;
	private String name = "";
	private double salary;
	
	static
	{
		Random r = new Random();
		nextId = r.nextInt(100000);
	}
	
	{
		id = nextId;
		nextId++;
	}
	
	public Employee(String n,double s)
	{
		name = n;
		salary = s;
	}
	
	public Employee(double s)
	{
		this("id:" + nextId,s);
	}
	
	public Employee()
	{
		//empty
	}
	
	public String getName()
	{
		return name;
	}
	
	public double getSalary()
	{
		return salary;
	}
	public int getId()
	{
		return id;
	}
}