更改子类中抽象类的方法

时间:2014-12-09 17:02:58

标签: java class methods subclass abstract

我在抽象类中创建了一个方法,即方法String toString()

public String toString() {
    String res ="(" + Character.toString(propositieletter1) + " " + symboolconstante + " " + Character.toString(propositieletter2) + ")";
    return res;

} 

这是我的抽象方法的一种方法,我的子类需要使用这种方法只改变" symboolconstante"。我不知道如何在没有在我的子类中再次使用整个方法的情况下做到这一点。

3 个答案:

答案 0 :(得分:0)

通过调用symboolconstante方法替换symboolconstante()。每个子类都可以覆盖此方法。

在抽象类中,您可以将其定义为抽象:

protected abstract String symboolconstante();

在每个子类中,你覆盖它:

@Override
protected String symboolconstante()
{
    return "something";
}

抽象类的toString()方法会调用此方法:

public String toString() {
    String res ="(" + Character.toString(propositieletter1) + " " + symboolconstante() + " " + Character.toString(propositieletter2) + ")";
    return res;

}

答案 1 :(得分:0)

在抽象类中定义字段(私有和最终),然后在构造函数中初始化字段

public abstract class AbstractClass {
  private final String symboolconstante;

  public AbstractClass (final String symbool) {
      this.symboolconstante = symbool;
  }
}

在子类中修改构造函数以将值传递给抽象类

public class SubClass extends AbstractClass {
  public SubClass() {
    super("+");
  }
}

答案 2 :(得分:0)

更改抽象toString方法以接受参数

public String toString(final String symboolconstante) {
  String res ="(" + Character.toString(propositieletter1) + " " + symboolconstante + " " + Character.toString(propositieletter2) + ")";
  return res;

} 

然后在子类中覆盖传入参数的toString:

@Override
public String toString() {
  return super.toString("+");
}