当用另一个抽象类扩展抽象类时,你如何处理构造函数?

时间:2018-03-27 02:36:54

标签: java constructor abstract

我有一个名为Event的类,它是抽象的。我有另一个名为RecurringEvent的类,它也是抽象的并扩展了Event。事件编译但RecurringEvent没有错误。

错误:

RecurringEvent.java:6: error: constructor Event in class Event cannot be applied to given types;  
    {  
    ^  
  required: int  
  found: no arguments  
  reason: actual and formal argument lists differ in length  

代码:

public abstract class Event implements Comparable 
{
private int timeAtWhichEventHappens;

public Event(int t)
{

    setTime(t);
}

public abstract void execute(Simulator s);

public int getTime()
{
    return timeAtWhichEventHappens;
}

public void setTime(int t)
{
    timeAtWhichEventHappens = t;
}

public int compareTo(Object o)
{
    Event e = (Event) o;

    return e.getTime()-getTime();

}

}


public abstract class RecurringEvent extends Event
{
private int period;

}

我该如何解决?

2 个答案:

答案 0 :(得分:1)

构造函数Event(int)需要一个整数参数。

Ergo 您的RecurringEvent构造函数必须调用super(int),它不是,因为您根本没有声明它,并且编译器不是& #39;为你做这件事。它无法读懂你的想法。

abstract与此无关。

答案 1 :(得分:-1)

RecurringEvent需要有一个调用super(int)的构造函数,因为超级构造函数有一个参数。我很确定超级构造函数是否没有这个参数可行。