验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Java抽象类中的构造函数如何调用

阅读:789 来源:乙速云 作者:代码code

Java抽象类中的构造函数如何调用

在Java中,抽象类不能被实例化,因此抽象类的构造函数不会像普通类那样被直接调用。然而,抽象类的构造函数可以在创建子类对象时被调用。当创建子类的实例时,子类的构造函数会隐式或显式地调用抽象类的构造函数。以下是两种调用抽象类构造函数的方法:

  1. 隐式调用:当创建子类的实例时,如果子类的构造函数没有显式地调用抽象类的构造函数,编译器会自动插入一个对抽象类无参构造函数的调用。例如:
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
  1. 显式调用:子类的构造函数可以通过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

总之,虽然不能直接实例化抽象类,但在创建子类对象时,抽象类的构造函数会被调用。这有助于初始化抽象类中的成员变量和方法,以便在子类中使用。

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>