构造方法
构造方法:
1、使用new + 构造方法 创建一个新的对象
2、构造函数是定义在java类中的一个用来初始化对象的函数
3、构造与类同名且没有返回值
4、当没有构造方法时,编译器为类自动添加形如 类名(){ }的构造方法
5、但是一旦写了构造方法之后,编译器就不会为类添加构造方法了,也就是说在调用默认的构造方法就会出错
例如:Person类的构造函数
public class Person{
int id;
int age;
Person(int _id,int _age){
id = _id;
age = _age;
}
}
public class Test{
public static void main(String[] args){
Person tom = new Person(1,25);
Person john = new Person(2,27);
Person jerry = new Person();
}
}
在执行Person tom = new Person(1,25);这行代码时,在栈内存里分配叫tom的并且在占内存里面分配_id和_age两个变量,将1和25两个数传递给_id和_age两个参数,且在堆内存里面也分配Person的对象有自己的属性id和age,内存情况如图:
当执行这两行代码时,
id = _id;
age = _age;
堆内存里面的id 等于1,堆内存里面的age等于25;当一个方法完成之后分配给占内存里面为他分配的空间消失,内存如图:
同理Person john = new Person(2,27);也是一样的
1、当没有写构造方法时,系统默认添加构造方法:例如下面的写法是可以的;
class Point{
int x;
int y;
}
public class Test{
public static void main(String[] args){
Point p = new Point();
}
}
2、当写了构造方法之后系统就不会再添加构造方法,例如下面代码时错误的:
public class Person{
int id;
int age;
Person(int _id,int _age){
id = _id;
age = _age;
}
}
public class Test{
public static void main(String[] args){
Person tom = new Person(1,25);
Person john = new Person(2,27);
Person jerry = new Person(); //写了构造方法之后系统就不会再添加构造方法
}
}
构造方法常见错误点:
1、构造方法没有返回值
void Person(int _id,int _age){
id = _id;
age = _age;
}
这是个普通的方法:如果调用可以这样写:tom.Person(1,25);