构造方法

构造方法:

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);

 

原文地址:https://www.cnblogs.com/white-the-Alan/p/10166804.html