先观察如下格式:
类名称 对象名称 = new 类名称() ;
上述格式为声明并实例化一个类的对象,其解释如下:
类名称:要定义对象的数据类型
对象名称:日后进行类属性或方法操作的标记变量
new:开辟堆内存空间
类名称():实例化对象,属于方法,即在类中提供一个和类名称相同的方法,此处实际上就表示了类中的构造方法,但是此构造方法和普通发发的区别在于:构造方法是在实例化对象时使用,而普通方法是在实例化对象产生后使用.
定义构造方法的要求:
1.构造方法的名称和类名称保持一致
2.构造方法不允许有返回值类型声明
3.对象实例化操作一定需要构造方法的存在,所以如果类中没有明确定义构造方法,则会自动生成一个无参无返回值的构造方法,如果类中以明确定义了构造方法,则此无实际意义的构造方法不会自动生成,即:一个类中至少存在一个构造方法.
在类中可以明确定义一个构造方法,通过构造方法为类中的属性初始化.由于构造方法本质仍为方法,所以也可以进行重载(方法名称相同,参数的类型和个数不同).
范例:
class Person{
private String name ;
private int age ;
public Person(){}
public Person(String n){
setName(n) ;
}
public Person(String n ,int a){
setName(n) ;
setAge(a) ;
}
public void tell(){
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a>=0 && a<=100){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
}
public class Demo{
public static void main(String args[]){
Person per = new Person("张三") ;
per.tell() ;
}
}
执行结果如下:
在编写代码的时候,要注意编写的规范:
类中的属性,构造方法和普通方法的定义顺序为:首先定义属性,之后定义构造方法,最后定义普通方法
对于类中构造方法的重载,所有的重载方法要按照参数的个数由多到少(或由少到多)依次排列.
构造方法严格来讲属于整个对象构造过程的最后一步,对象的构造过程如下:
为对象分配内存空间→为其设置默认值→构造方法进行其他操作
即类中定义的属性的默认值,只有在构造执行完毕后,才可以真正赋值(←→见抽象类的注意点).