类的构造器是一种特殊的方法,它的特点是:没有返回值
、名称必须和类名一致
;
1、用于创建对象,每个类都至少有一个构造器(默认是隐藏的);
2、构造器名称必须和类名称一致;
3、一个类可以有多个构造器,但这些构造器的参数列表必须不同;
4、如果没有定义构造器,则系统将自动提供一个默认的不带任何参数的构造器;
5、一旦自己定义了一个构造器,那么,默认的就会消失掉;
6、当我们使用 new
的时候就是调用的构造器;
7、构造器本质上是一个特别的方法,所以语法和方法类似,只是构造器的名字必须和类的名字一致;
8、有参数的构造器,表示我们在用 new
实例化对象的时候,必须给属性设定值,当然如果不在实例化的时候设定,也可以在创建完成之后,再单独设定;
一、类的语法
[<modifiers>] class <class_name> {
[<attribute_declarations>]
//构造器语法
[<constructor_declarations>]
[<method_declarations>]
}
二、构造器的语法
[<modifiers>] <class_name> ([<argu_list>]){
[<statements>]
}
-
[<modifiers>]
访问权限修饰符,包括public
default
protected
private
; -
<class_name>
:必须和类的名字一致; -
[<argu_list>]
:构造器的参数,可以有也可以没有; -
[<statements>]
:构造器中的代码片段; -
构造器本质上就是类的方法,只是构造器没有返回值;
-
如果开发者不自己定义构造器,系统会提供一个默认的、没有参数的构造器,方便我们使用
new
关键字来创建实例; -
如果开发者自己定义了构造器,那么系统就不会提供默认的构造器;
三、编程实战
代码的详细解读,可以参考视频教程
Person.java
/**
* User: 祁大聪
* 类名必须和文件名一样
*/
public class Person {
//类的属性
private String name;
private int age;
//如果没有其他的构造器,系统默认就有一个隐藏的没有参数的构造器
public Person(){
System.out.println("Person() is called");
}
//有参数的构造器
public Person(String name){
System.out.println("Person(String name) is called");
this.name = name;
}
//有参数的构造器,参数列表必须和其他的构造器不一样
public Person(String name,int age){
System.out.println("Person(String name) is called");
this.name = name;
}
public static void main(String[] args) {
//创建的实例时候,根据不同的参数列表调用不同的构造器
Person p = new Person("三妮");
p.name = "三妮";
System.out.println(p.name);
}
}