gpt4 book ai didi

java - 类构造函数中的抽象方法

转载 作者:行者123 更新时间:2023-12-01 18:06:59 24 4
gpt4 key购买 nike

我想实现一个抽象 Java 类。其中一个抽象方法必须由每个子类实现,以确保该部分代码将在每个子类中单独执行。有没有其他方法可以做到这一点,从而避免通过从主类的构造函数调用抽象方法而出现的“警告”?

    public abstract class Listener {

protected Date checkTime = new Date();
protected TypeUpdate type = UNKNOW;

public Listener(){
super();
this.setTypeListener();
}

public void setTime(Date date) {
if (date != null) {
return;
}
this.checkTime = date;
}

/* Abstract methods */
public abstract void execute();

protected abstract void setTypeListener();
}

谢谢。------------------------------ 已编辑 ----------

好的,在构造函数中调用抽象方法时出错。那么,我该怎么做才能强制继承类进行具体的构造函数实现(例如,以某种方式初始化成员?)

最佳答案

您到达基类构造函数并从该构造函数返回时,在子类构造函数中,所有字段初始化都将发生,其余代码形成子构造函数。

为了确保调用某个方法,您可以稍后延迟调用该方法。或者传递一个独立的对象,作为整个子对象的“一部分”。

public Child() {
super(createPart());
}

private static Part createPart() {
return new Part().withAnswer(42);
}

public Base(Part part) { ... }
<小时/>

也可能有这样的情况

  • 提供的服务(公开最终)
  • 已实现的要求(受抽象保护)

所以:

class Base {

public final void foo() {
onFoo();
}

protected void onFoo() {
throw new IllegalStateException("Missing onFoo implementation "
+ getClass().getName());
}
}

关于java - 类构造函数中的抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60544090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com