Java构造器
什么是构造器
构造器也叫构造方法、构造函数,是一种特殊类型的方法,负责类中成员变量(域)的初始化。构造器的用处是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。
作用
构造方法一般用来初始化成员属性和成员方法,是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法,调用了对象的属性和方法。
怎么定义构造器
构造方法的名字必须和所在类的名字一致,没有返回值,但不能声明void,访问权限可以为任意,但是一般情况下使用public方法权限,构造方法中的参数可以根据需要自行定义,参数的不同的构造方法构成重载
格式:
//无参数构造
public 类名称 (){
方法体
}
//有参数构造
public 类名称 (参数类型 参数名称[,参数类型2 参数名称2]..){
方法体
}
例如:定义一个学生类
//学生类
public class Student {
public Student(){ //无参构造方法
System.out.println("无参构造方法执行了")
}
public Student(String str){ //有参构造方法
System.out.println("有参构造方法执行了")
}
}
//测试类
public class Test{
public static void main(String[] args){
Student s = new Student(); //通过new去调用构造方法
}
}
此时可以直接调用构造方法,输出
构造方法执行了
构造器的继承
Java中构造方法不能被继承。子类在继承父类的时候,首先运行父类构造函数,也就是说,运行子类时会先调用父类的构造函数。
比如,创建一个父类Father类,Son类为子类
public class Father {
//父类无参构造方法
public Father(){
System.out.println("父类的默认构造方法");
}
//父类带参构造方法
public Father(String str1){
System.out.println("父类的带参构造方法");
}
}
Son类继承Father类
//子类构造器
public class Son extends Father{
//无参构造器
public Son(){
//这里没有指定调用父类的哪个构造方法,会默认调用super(),调用父类的无参构造器public Father()
}
//重载构造器
public Son(String str1){
//必须写在构造器第一行,调用父类的带参构造器public Father(str)
super(str1);
System.out.println("子类带参构造器");
}
}
实例化Son
public static void main(String[] args) {
Son son1 = new Son();
Son son2 = new Son("");
}
会先调用父类的构造方法,输出结果为:
父类的默认构造方法
父类的带参构造方法
子类带参构造器
若Father类没有无参构造器,就必须在子类构造器中通过 super(“字符串”)来调用,否则编译器会报错
//子类构造器
public class Son extends Father{
//无参构造器
public Son(){
//由于Father()没有无参构造器,所以必须在子类型构造器中通过super("字符串")来调用,否则编译器会报错。
//如果没定义这句,系统会默认调用super()
super("");
}
//带参构造器
public Son(String str){
//由于Father()没有无参构造器,所以必须在子类型构造器中通过super("字符串")来调用,否则编译器会报错。
//如果没定义这句,系统会默认调用super()
super(str);
}
}
构造器的特性:
- 构造方法的名称必须和所在的类名称完全一样,就要大小写也要一样
- 一个类中可以定义多个构造器,但是构造器的参数列表必须不同(重载)
- 构造方法不要写返回值,连void都不写
- 构造方法不能return一个具体的返回值
- 如果没有编写任何构造方法,那么编译器会默认自动生成一个构造方法,没有参数、方法体什么事情都不做 :public 类名称(){ } (无参构造方法)
- 一旦编写了至少一个构造方法,那么编译器将不再默认自动生成构造方法
- 不能被static、final、synchronized、abstract和native修饰。Java中构造方法不能被继承
定义一个标准的类
一个标准的类通常要拥有下面四个组成部分:
-
所有的成员变量都要使用private关键字修饰
-
为每一个成员变量编写一对Getter/Setter方法
-
编写一个无参数的构造方法
-
编写一个全参数的构造方法
这样标准的类也叫做Java Bean。
此学习资料参考于

浙公网安备 33010602011771号