构造方法
定义java中的类一般包含3个部分
- 属性
- 构造方法
- 普通方法
构造方法:
- 构造方法名称与类名相同,无返回值;
- 每个类中至少有1个构造方法;
- 构造方法允许重载,重载时只需考虑改变参数类型或个数
在实例化对象格式
类名称 对象名称 = new 类名称()
其中 类名称() 就是构造方法。
如果定义类的过程中没有定义构造方法,则会在实例化时系统自动生成默认的无参数构造方法。
如果重载了带参数构造方法,则系统将不会自动生成默认的构造方法,也就是在实例化时,需要带上参数,否则会报错。
class Person{
Person(){ //系统默认的无参数构造方法
}
Person(String name,int age){ // 重载的带参数的构造方法
name=name;
age=age;
}
public void info(){
System.out.println(name,age);
}
}
public class testDemo(){
public static void main(String args[]){
Person per=new Person("张三",20); //重载了带参数的构造方法,在实例化时需要带参数,否则会报错
per.info();
}
}
疑问:构造方法没有返回值,为什么不用void声明?
public Person() //构造方法
public void Person() //普通方法
从结构上来看,区分出普通方法与构造方法
构造方法的作用
- 利用构造方法对属性初始化处理
- 如果有很多个属性参数,可以避免重复的调用setter方法。(可以一次性传递多个参数,不用多次setter方法赋值)
- setter方法除了赋值之外,也可以对属性进行修改,也就是重新赋值。
匿名对象
new Person("张三",20).info();
不用对象名 Person per ,只使用后边的new Person("张三",20) ,这个就是匿名对象。
匿名对象不会有栈内存空间,所以使用一次后就会成为垃圾。
一般使用有名对象,使用的多了或者对象太多了,可直接使用匿名对象。