【问题标题】:Changing method of an abstract class in subclass在子类中更改抽象类的方法
【发布时间】:2014-12-09 17:02:58
【问题描述】:

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

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

} 

这是我的抽象方法的一个方法,我的子类需要使用这个方法只需要更改“symboolconstante”。如果不在我的子类中再次创建整个方法,我不知道如何做到这一点。

【问题讨论】:

    标签: java class methods subclass abstract


    【解决方案1】:

    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;
    
    }
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2010-12-13
          • 1970-01-01
          • 1970-01-01
          • 2016-12-28
          • 2011-08-01
          • 2021-11-18
          • 1970-01-01
          • 2012-09-21
          • 1970-01-01
          相关资源
          最近更新 更多