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);      
    }  
    
}

构造器的特性:

  1. 构造方法的名称必须和所在的类名称完全一样,就要大小写也要一样
  2. 一个类中可以定义多个构造器,但是构造器的参数列表必须不同(重载)
  3. 构造方法不要写返回值,连void都不写
  4. 构造方法不能return一个具体的返回值
  5. 如果没有编写任何构造方法,那么编译器会默认自动生成一个构造方法,没有参数、方法体什么事情都不做 :public 类名称(){ } (无参构造方法)
  6. 一旦编写了至少一个构造方法,那么编译器将不再默认自动生成构造方法
  7. 不能被static、final、synchronized、abstract和native修饰。Java中构造方法不能被继承

定义一个标准的类

一个标准的类通常要拥有下面四个组成部分:

  1. 所有的成员变量都要使用private关键字修饰

  2. 为每一个成员变量编写一对Getter/Setter方法

  3. 编写一个无参数的构造方法

  4. 编写一个全参数的构造方法

这样标准的类也叫做Java Bean



此学习资料参考于

https://blog.csdn.net/qq_47897078/article/details/120243801

https://www.php.cn/java-article-419827.html

posted @ 2022-05-08 22:44  ·追·  阅读(146)  评论(0)    收藏  举报
/*鼠标跟随效果*/ //返回顶部 returnTop