gpt4 book ai didi

java: 不能在抽象类中使用构造函数

转载 作者:行者123 更新时间:2023-12-01 04:30:53 24 4
gpt4 key购买 nike

我在 red5 中为作业调度程序创建了以下抽象类:

package com.demogames.jobs;

import com.demogames.demofacebook.MysqlDb;
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.scheduling.IScheduledJob;
import org.red5.server.api.so.ISharedObject;
import org.apache.log4j.Logger;
import org.red5.server.api.Red5;

/**
*
* @author ufk
*/
abstract public class DemoJob implements IScheduledJob {

protected IConnection conn;
protected IClient client;
protected ISharedObject so;
protected IScope scope;
protected MysqlDb mysqldb;

protected static org.apache.log4j.Logger log = Logger
.getLogger(DemoJob.class);

protected DemoJob (ISharedObject so, MysqlDb mysqldb){

this.conn=Red5.getConnectionLocal();
this.client = conn.getClient();
this.so=so;
this.mysqldb=mysqldb;
this.scope=conn.getScope();
}

protected DemoJob(ISharedObject so) {
this.conn=Red5.getConnectionLocal();
this.client=this.conn.getClient();
this.so=so;
this.scope=conn.getScope();
}

protected DemoJob() {
this.conn=Red5.getConnectionLocal();
this.client=this.conn.getClient();
this.scope=conn.getScope();
}

}

然后我创建了一个简单的类来扩展前一个类:

public class StartChallengeJob extends DemoJob {

public void execute(ISchedulingService service) {

log.error("test");

}

}

问题是我的主应用程序只能看到没有任何参数的构造函数。意味着我可以做 new StartChallengeJob()为什么主应用程序看不到所有构造函数?

谢谢!

最佳答案

构造函数不是继承的。 StartChallengeJob 有效地看起来像这样:

public class StartChallengeJob extends DemoJob {

public StartChallengeJob() {
super();
}

public void execute(ISchedulingService service) {
log.error("test");
}
}

如果您希望所有父类(super class)构造函数签名都可用,您还需要在 StartChallengeJob 中拥有这些构造函数:

public class StartChallengeJob extends DemoJob {

public DemoJob (ISharedObject so, MysqlDb mysqldb) {
super(so, mysqldb);
}

public DemoJob (ISharedObject so) {
super(so);
}

public StartChallengeJob() {
super();
}

public void execute(ISchedulingService service) {
log.error("test");
}
}

关于java: 不能在抽象类中使用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764274/

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