构造方法

chapter 8:构造方法(constructor)

构造方法(constructor)是一种特殊的方法。

通过构造方法可以完成实例变量的初始化。

构造方法的声明格式:

[修饰符] 类名([参数列表])[throws 异常列表]{
    //方法体
}

注意:被 [ ] 包围的内容不是必须存在的,后面在声明格式里出现的[ ]都是这个意思。

构造方法与类名同名、不能显式书写返回类型。比如:

public class Dog{
    
    public Dog(){
        //注意方法名是与类名同名
    }
    
}

如果一个类中没有书写构造方法,那么编译器将提供一个默认构造方法。

所谓默认构造方法是 public修饰的、没有参数的构造方法。比如在 Dog 类中:

public class Dog {
    
}

并没有显式提供任何构造方法,但实际上,在编译阶段,编译器提供了一个默认构造方法。

由编译器提供的构造方法类似以下定义:

//在类中没有显示书写,但实际上编译器提供了
public Dog(){
    //编译器提供的默认的无参构造方法
}

如果显示书写了构造方法,则编译器不再提供默认构造方法。比如:

public class Dog{
    
    //字段
    public String name="哮天犬";
    
    public Dog( String name ){
        this.name=name;
    }
    
}

构造方法是可以带有参数的、通常这些参数用来初始化实例变量。

构造方法也是可以重载的。比如:

public class Dog{

    private String name;
    
    public Dog(){
        //当显示书写了带参数的构造方法,如果还需要使用无参构造,则需要显式书写。
    }
    
    public Dog( String name ){
        this.name=name;
    }   
    
    public static void main(String[] args) {

        Dog da = new Dog(); //调用无参构造
        
        String na = "哮天犬";
        Dog db = new Dog(na); //调用有参构造
        
    }
    
}

这时,上面这两个构造方法就构成了重载。

当构造方法出现异常时,不会直接显式构造方法名,而是通过 指代构造方法。

public class Dog {
    
    public Dog() {
        System.out.println(10/0); //这里我们是为了让构造方法出现异常、特意在这块造了一个异常。
    }
    
    public static void main(String[] args) {

        Dog da = new Dog();
        
    }
}

明显这时我们这个构造方法会有异常,下面是报的异常。

我们不看报的异常是什么(因为这个异常是我们故意制造的),在这里我们要关注的是异常所在的位置,显式的指代的就是构造方法,即出现异常的位置就是构造方法。

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1