对象构造

重载(overloading)

    Java允许重载任何方法,而不只是构造器方法。因此,要完整地描述一个方法,需要指出方法名以及参数类型。

GregorianCalendar today = new GregorianCalendar();

    或者

GregorianCalendar deadline = new GregorianCalendar(2017,Calendar.DECEMBER,31);

    如果多个方法(例如,GregorianCalendar构造器方法)有相同的名字、不同的参数,便产生了重载。

    方法的签名(signature):方法名+参数类型      注:返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。

//java.lang.String类有四个称为indexOf的公有方法。它们的签名是:
indexOf(int)
indexOf(int,int)
indexOf(String)
indexOf(String,int)

默认域初始化(并不推荐使用,尽管可以这么做)

如果在构造器中没有显式地给域赋初值,那么就会被自动地赋为初值:数值为0,布尔型为false、对象引用为null。

无参数的构造器

对象由无参数构造函数构建时,其状态会设置为适当的默认值。

public class Employee{
    private String name;
    private double salary;
    private Date hireDay;
    public Employee(){
        name = "";
        salary = 0;
        hireDay = new Date();
    }
}

如果在编写一个类时没有编写构造器,那么系统就会提供一个无参数构造器。

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

Employee(String name,double salary,int y,int m, int d)

对于上边的类,构造默认的雇员属于不合法。也就是调用

Employee e = new Employee();

如果希望所有域被赋予默认值,可以采用下列格式:

public ClassName(){
}

显式域初始化

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

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


你可能感兴趣的:(对象构造)