当前位置: 代码迷 >> 综合 >> 面向对象----构造方法/构造器(constructor)
  详细解决方案

面向对象----构造方法/构造器(constructor)

热度:17   发布时间:2023-12-03 09:00:24.0

定义:构造器也叫构造方法,用于对象的初始化构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造器的名称应与类名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一种特殊的方法。

构造器的作用:
(1)创建对象:通过new关键字来使用构造器,创建对象
换句话说:new 后面的就是构造器

(2)在创建对象的同时,可以给成员变量初始化。

如何声明构造器:
【修饰符】 class 类名{
    //无参构造
    【权限修饰符】 类名(){
    }
    //有参构造
    【权限修饰符】 类名(形参列表){
    }
}

构造器长得很像方法,所以很多人又把构造器称为构造方法。

              

构造器特点:
(1)构造器的名字必须和类名完全一致,包括大小写形式
(2)构造器没有返回值类型,也不写void,如果写了返回值类型就不是构造器了,就变成成员方法了。
(3)构造器的修饰符,只能是权限修饰符:public,protected,default,private
(4)如果一个类没有加/写任何构造器,那么编译器会自动添加一个无参构造,
并且这个默认无参构造的权限修饰符默认和类的权限修饰符一样。
(5)如果我们声明了/写了构造器,那么编译器就不会自动产生默认的无参构造了。
如果此时需要无参构造,就只能手动写了。

在继承时,构造器是不会被继承到子类的,但是子类一定会调用父类的构造器。
默认情况下,调用父类的无参构造,相当于子类构造器的首行有一句:super();
如果不想要调用父类的无参构造,想要调用父类的有参构造,或者父类只有有参构造,那么需要在子类的构造器首行写一句:super(实参列表);

问?为什么子类一定要调用父类的构造器呢?
        这里调用父类的构造器不是为了创建父类的对象,而是为了给从父类继承的实例变量进行初始化。
        因为子类会继承父类的成员变量,那么从父类继承的成员变量的初始化,需要通过父类的构造器进行。

public class SxtStu {int id;String sname;int age;SxtStu(){      //无参构造器,如果我们没有手动定义构造器,系统会自动添加}

public class Student {private String name;public Student(){System.out.println("无参构造");}public Student(String name){this.name = name;System.out.println("有参构造");}public String getInfo(){return "姓名:" + name;}
}

构造方法重载(创建不同用户对象)

public class User {int id;String name;  //账户名String pwd;   //密码public User(){}public User(int id,String name){this.id =id;this.name = name;}public User(int id,String name,String pwd){this.id = id;this.name = name;this.pwd = pwd;}public static void main(String[] args) {User u1 = new User();User u2 = new User(101,"李龙");User u3 = new User(100,"李龙","123456");}
}

如果方法构造中形参名与属性名相同时,需要用this关键字区分属性与形参。

例如:this.id表示属性id;id表示形参id

快捷键:Alt + insert

  相关解决方案