抽象类可以有构造方法,用于子类创建时初始化成员变量。子类通过super()调用其构造方法,遵循“先父后子”原则,若未定义则使用默认无参构造,建议显式提供无参构造避免错误。

Java抽象类可以有构造方法。虽然不能直接实例化抽象类,但它的构造方法在子类创建对象时会被调用,用于初始化抽象类中的成员变量或执行必要的公共初始化逻辑。
抽象类通常包含字段和需要初始化的资源。子类继承抽象类时,会先调用父类(即抽象类)的构造方法。这符合Java中“先父后子”的对象创建顺序。
子类通过 super(参数) 显式调用抽象类的构造方法,必须放在子类构造方法的第一行。
示例代码:
// 抽象类
abstract class Animal {
protected String name;
// 无参构造
public Animal() {
this.name = "未知";
System.out.println("Animal 无参构造被调用");
}
// 带参构造
public Animal(String name) {
this.name = name;
System.out.println("Animal 构造被调用,name = " + name);
}
}
// 具体子类
class Dog extends Animal {
private int age;
public Dog(String name, int age) {
super(name); // 调用父类带参构造
this.age = age;
System.out.println("Dog 构造完成,age = " + age);
}
}
测试调用:
立即学习“Java免费学习笔记(深入)”;
public class Test {
public static void main(String[] args) {
Dog dog = new Dog("旺财", 3);
}
}
Animal 构造被调用,name = 旺财
Dog 构造完成,age = 3
使用时注意以下几点:
以上就是Java抽象类是否可以有构造方法 如何在子类中调用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号