Java构造方法 super 及自定义异常 throw 合集详解用法
构造方法 super
Java中一个类可以有多个构造方法,开发者可以选择不同的构造方法来满足不同的需求,但是必须保证类中至少存在一个构造方法。在子类构造方法中除了继承父类构造方法外,还有另外一种重要的方式——调用父类构造方法,可以使用super()或super(参数)语句来实现。
super()语句用于调用父类无参构造方法,它必须是子类构造方法的第一条语句,如果没有显式地使用super(),Java编译器会自动加上这条语句。
下面的代码展示了如何在子类构造方法中调用父类构造方法:
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
}
public class Dog extends Animal {
private String breed;
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
}
在上面的代码中,Dog类继承了Animal类,Dog类中的构造方法使用super(name)语句调用了Animal类中的构造方法,从而为Dog对象的name属性赋值。
自定义异常 throw
Java中,我们可以使用内置的异常类来处理错误,例如NullPointerException、ArrayIndexOutOfBoundsException等。但在实际开发中,我们常常需要自定义异常来处理更复杂的错误情况,这时就需要使用throw语句来抛出异常。
自定义异常通常需要继承于Exception类或其子类,且必须实现Exception类或其子类中定义的至少一个构造方法。
下面的代码展示了如何自定义异常类:
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
public class Test {
public static void main(String[] args) {
int i = 1;
try {
if (i == 1) {
throw new MyException("发生了自定义异常。");
}
} catch (MyException e) {
e.printStackTrace();
}
}
}
在上面的代码中,MyException类继承了Exception类,并实现了构造方法MyException(String message)。在Test类的main方法中,我们使用throw语句抛出了一个MyException类型的异常。当i等于1时,程序会执行throw new MyException("发生了自定义异常。")语句,从而触发MyException类型的异常处理块。
示例
示例1:使用super语句调用父类构造方法
public class Car {
private String brand;
public Car(String brand) {
this.brand = brand;
}
}
public class Bmw extends Car {
private String model;
public Bmw(String brand, String model) {
super(brand);
this.model = model;
}
}
public class Test {
public static void main(String[] args) {
Bmw bmw = new Bmw("BMW", "X6");
System.out.println(bmw);
}
}
在上面的代码中,我们定义了一个Bmw类来继承Car类,并添加了一个字符串类型的model属性。在Bmw类的构造方法中,我们使用super(brand)语句调用了Car类中的构造方法,初始化了Bmw对象的brand属性。在Test类的main方法中,我们使用Bmw类创建一个Bmw对象,并打印对象的信息。
示例2:使用throw语句抛出自定义异常
public class ScoreException extends Exception {
public ScoreException(String message) {
super(message);
}
}
public class Test {
public static void main(String[] args) {
int score = 85;
try {
if (score < 90) {
throw new ScoreException("分数不合格,需要重修。");
}
} catch (ScoreException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们定义了一个ScoreException类来继承Exception类,并实现了构造方法ScoreException(String message)。在Test类的main方法中,我们定义了一个int类型的score变量并赋值为85,然后使用throw语句抛出了一个ScoreException类型的异常。当score小于90时,程序会执行throw new ScoreException("分数不合格,需要重修。")语句,从而抛出ScoreException异常,并打印堆栈信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java构造方法 super 及自定义异常throw合集详解用法 - Python技术站