繁体   English   中英

子类中抽象类的更改方法

[英]Changing method of an abstract class in subclass

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

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

} 

这是我的抽象方法的一种方法,我的子类只需要使用此方法更改“ symboolconstante”。 我不知道如何在不再次在子类中创建整个方法的情况下执行此操作。

用对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;

}

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

public abstract class AbstractClass {
  private final String symboolconstante;

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

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

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

将抽象的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("+");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM