您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Java中,抽象类不能被实例化,因此抽象类的构造函数不会像普通类那样被直接调用。然而,抽象类的构造函数可以在创建子类对象时被调用。当创建子类的实例时,子类的构造函数会隐式或显式地调用抽象类的构造函数。以下是两种调用抽象类构造函数的方法:
abstract class AbstractClass {
AbstractClass() {
System.out.println("AbstractClass constructor called");
}
}
class ConcreteClass extends AbstractClass {
ConcreteClass() {
// 编译器会自动插入对AbstractClass无参构造函数的调用
System.out.println("ConcreteClass constructor called");
}
}
public class Main {
public static void main(String[] args) {
ConcreteClass obj = new ConcreteClass();
}
}
输出结果:
AbstractClass constructor called
ConcreteClass constructor called
super()
关键字显式地调用抽象类的构造函数。例如:abstract class AbstractClass {
AbstractClass(String message) {
System.out.println("AbstractClass constructor called with message: " + message);
}
}
class ConcreteClass extends AbstractClass {
ConcreteClass() {
super("Hello from ConcreteClass"); // 显式调用AbstractClass的带参数构造函数
System.out.println("ConcreteClass constructor called");
}
}
public class Main {
public static void main(String[] args) {
ConcreteClass obj = new ConcreteClass();
}
}
输出结果:
AbstractClass constructor called with message: Hello from ConcreteClass
ConcreteClass constructor called
总之,虽然不能直接实例化抽象类,但在创建子类对象时,抽象类的构造函数会被调用。这有助于初始化抽象类中的成员变量和方法,以便在子类中使用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。