在Java中,构造器是一种特殊的方法,主要用于创建和初始化对象。构造器的名称必须与类名相同,且没有返回类型,甚至连`void`也不写。
构造器的声明和使用
构造器可以通过`new`关键字来调用,例如:
public class MyClass{
public MyClass(){
}
}
例子中,当我们使用`new MyClass()`来创建一个新的`MyClass`对象时,就会调用这个构造器 。
默认构造器
如果一个类没有显式地定义任何构造器,Java编译器会为该类提供一个默认的无参构造器
自定义构造器
可以定义一个或多个自定义构造器来初始化对象的不同状态,例如:
public class MyClass{
private int value;
pubilc MyClass(int value){
this.value = value;
}
}
我们定义了一个接受一个整型参数的构造器,用于设置`value`属性的值。
构造器重载
像其他方法一样,构造器也可以重载,即在同一个类中定义多个具有不同参数列表的构造器。
public class MyClass {
private int value;
private String message;
public MyClass() {
this(0, "Default message");
}
public MyClass(int value) {
this.value = value;
this.message = "Default message";
}
public MyClass(int value, String message) {
this.value = value;
this.message = message;
}
}
其中,我们定义了三个构造器,分别是无参构造器、接受一个整型参数的构造器和接受一个整型参数和一个字符串参数的构造器。这些构造器之间通过`this`关键字进行了关联。
构造器的执行顺序
当创建对象时,构造器按照以下顺序执行:
- 如果存在继承关系,首先调用父类的无参构造器(除非另有指定);
- 接着执行类的构造器体
构造器特点:
1,构造器要和类同名
2,创建对象的时候,new后边跟的就是构造器
3,在每个类当中都会有默认的不会显示的无参的构造器,如果我们在类当中重写一个构造器,那么无参构造器将会被覆盖,不能在被使用
如果你还想使用默认的不会显示的无参的构造器,那么自己重新写一个就行
4,构造器没有返回值,如果你带上了返回值,那么他将不再是构造器
5,在一个类当中,可以有很多个构造器,他们的名字是相同的,但是他们的参数列表一定不能相同
this关键字:
this代表当前对象(谁使用它谁就是对象)
this关键字不可以用在static修饰的方法中,因为static代表的是类,this代之的是对象,有类不一定有对象
this能够调用static修饰的方法和变量,原因是:类的东西被所有东西所共享
this的使用方法:
this.属性名;在方法当中当局部变量名和成员(全局)变量名相同时,我们用this来区分全局变量和局部变量。this代表当前对象,那么this调用的一定是属于对象能调用的变量是全局变量。
this.方法名:代表当前正在运行的对象调用该方法。
this.():a.构造器的调用方式,不能再普通方法中使用,只能在构造方法中使用
b.在构造方法中使用必须是第一条语句
c.调用的是一个构造器,可以调用带参数的构造区,只要在this的()当中赋值就行
d.在一个类下两个构造方法中不能通过this()相互调用
e.不能与super()同时使用