JAVA构造方法

作用

构造方法(Construtor)是一个 特殊 的方法

创建一个对象时,构造方法用来 初始化 对象 。

通过 new 关键字创建对象,就是在调用构造方法:

new Phone()

构造方法的定义

格式

 权限 构造方法名(参数列表){
   // 方法体
}
格式要求:
  1. 构造方法 不能 声明返回类型,也不能用 void
  2. 构造方法的方法名 必须与类名相同(注意区分大小写,Java是严格区分大小写的)
  3. 构造方法可以重载
  4. 不要在构造方法里使用 return 来返回当前类的对象,因为构造方法的返回值是隐式的
  5. 构造方法不能被 static、final、synchronized、abstract 修饰。
    • 构造方法用于初始化一个对象,所以用 static 修饰没有意义。
    • 构造方法不能被子类继承,所以用 final 和 abstract 修饰没有意义。
    • 多个线程不会同时创建内存地址相同的同一个对象,所以用 synchronized 修饰没有必要。

默认构造方法(无参构造方法)

所有的类都有构造方法,如果我们没有定义构造方法,Java编译器 自动提供了一个 无参数构造方法,称之为 默认构造方法

一旦定义了构造方法,Java编译器 就 不会提供 默认构造方法

构造方法的作用

在构造方法中写一些初始化的代码

public class Phone {

//    String name="iphone12";
//    int ram=4;

    String name;
    int ram;

    public Phone(){
        System.out.println("默认构造方法(无参构造方法)");
        //设置成员变量初始值
        name="iphone12";
        ram=4;
    }
}

有参构造方法

可以更好的初始化成员变量

public class Phone {
    String name;
    int ram;
    /*
    有参构造方法,可以自定义传值,然后给成员变量赋值
     */
    public Phone(String str,int i){
        name=str;
        ram=i;
    }

    public static void main(String[] args) {
        //当类中没有定义构造方法,java编译器加上 默认构造方法,无参构造方法
//        Phone phone=new Phone();//通过new关键字创建对象,就是在调用构造方法(默认构造方法,无参构造方法)
//        System.out.println(phone.name);
//        System.out.println(phone.ram);
//
//        phone.name="小米15";
//        phone.ram=64;
//        System.out.println(phone.name);
//        System.out.println(phone.ram);

        Phone phone=new Phone("小米15",64);
        System.out.println(phone.name);
        System.out.println(phone.ram);

    }
}

构造方法 与 普通方法 的区别

  1. 构造方法 不需要 声明 返回类型,也不能用 void
    如果声明了返回类型,就 不再是构造方法 了
  2. 构造方法不能被 static、final、synchronized、abstract修饰。
  3. 不要在构造方法里使用 return

例子

public class Student {
    private String name;
    private int age;
    // 无参数构造方法
    public Student() {

    }
    // 有参数构造方法
    public Student(String name,int age) {
        this.name = name;
        this.age = age;
  }
}

原文出处:/show_1EF4rWy80sNU.html