java构造方法是用来干什么的?
- 构造方法是用来在类中初始化对象的
public class Computer{
//创建了一个电脑类
public Computer(){ //public Computer 就是类Computer的构造方法
//用构造方法创建类的对象
System.out.println("这是一种无参构造方法");
}
}
构造方法的定义
在创建构造方法时,我们要注意一下几点:
- 构造方法的名称要与类名相同,比如:
public class Ipad{
//创建了一个平板类
public Ipad(){ //public Ipad 就是类Ipad的构造方法
//用构造方法创建类的对象
System.out.println("这是一种正确的构造方法");
}
}
public class Ipad{
//创建了一个平板类
public Computer(){ //public Computer的名称与类名Ipad不相同,属于错误的构造方法定义
System.out.println("这是一种错误的构造方法");
}
}
- 构造方法没有返回值,所以构造方法不能被
static、final、synchronized、abstract 和 native
(类似于abstract
)修饰。 这里注意public void也
没有返回值,但是不能用于构造方法的定义
无参构造方法与有参构造犯法
- 二者的区别即有无参数,如:
public class Ipad{
public Ipad(){
//无参数构造方法
}
public Ipad(int num){
//有参构造方法,参数为num
}
}
- 无参构造方法与有参构造方法的使用区别在下面会讲到,这里只需要知道二者在定义上的区别和认识一下即可。
如何使用构造方法?
在创建类时,如果我们,没有定义任何的构造方法,那么java虚拟机会默认帮我们创建一个无参构造方法,构造方法无论是有参还是无参,都是在mian方法中使用的,具体如何使用,就边看代码边解释吧
- 没有定义任何构造方法时:
public class Ipad{
//当我们没有定义任何构造方法时,java虚拟机会默认帮我们创建一个无参构造犯法
String name_0;
public static void main(String[] args){
//无参构造方法需要在main方法中使用new来调用构造方法
Ipad name_1 = new Ipad();
name_1.name_0 = "这是一个java虚拟机默认创建的无参构造方法";
System.out.println(name_1.name_0);
}
}
运行后得到的结果:
- 自定义了无参构造方法时:
public class Ipad {
//定义一个无参构造方法,让其输出这是一个自定义的无参构造方法
public Ipad(){
System.out.println("这是一个自定义的无参构造方法");
}
public static void main(String[] args){
//无参构造方法需要在main方法中使用new来调用构造方法
Ipad pr = new Ipad();
//因为定义的构造方法已经有我们需要输出的语句,所以在main方法中不再需要写输出语句,直接调用即可
pr.Ipad();
}
}
运行后得到的结果:
- 定义有参构造方法时:
所谓有参构造方法,就是方法带有参数,类似C语言中的函数参数
import java.util.Scanner;
public class Ipad{
//定义一个有参构造方法,参数在main方法输入,在自定义的有参构造方法中输出
public Ipad(int number){
System.out.println("参数number的值为"+number);
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int num = input.nextInt();
//有参构造方法同样也需要在main方法中使用new来调用构造方法,不同的是,必须在括号内加入参数,否则编译器会报错
Ipad pr = new Ipad(num);
}
}
运行后得到的结果:
当上诉代码中Ipad pr = new Ipad(num);写成Ipad pr = new Ipad();时,编译器会报错,因为缺少了相应的参数: