如何确保某些方法从子类(Java)中的方法从抽象超类中调用

martin_wun

我有一个方法,一个抽象的超A级doSomething()A必须实现的子类doSomething(),但每次子类调用时,也应调用一些通用代码doSomething()我知道可以这样实现:

public class A {
  public void doSomething() {
    // Things that every sub-class should do 
  }
}

public class B extends A {
  public void doSomething() {
    super.doSomething();
    // Doing class-B-specific stuff here
    ...
  }
}

但是,似乎存在三个问题:

  • 方法签名必须匹配,但我可能只想在子类方法中返回某些东西,而在超类中不返回
  • 如果我使A.doSomething()抽象,则不能在A中提供(通用)实现。如果我不抽象,就不能强制子类实现它。
  • 如果我使用其他方法提供通用功能,则无法强制B.doSomething()调用该通用方法。

任何想法应如何实施方法?

卡恰诺夫

将调用添加回doSomething()

public class A {
  public void doSomething() {
    // Things that every sub-class should do 
    doSomethingMore()
  }
}

protected abstract void doSomethingMore()

因此,所有子句都必须通过额外的动作修改doSomethingMore(),但是外部类将调用public doSomething()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从超类中没有抽象声明的子类中调用getter

Java:从子类调用超类的受保护方法-不可见?

从子类调用超类函数的正确方法

如何在javascript中从子类调用父方法?

如何从修饰的子类方法中调用重写的超类方法

如何从子类中调用基类的__init__方法?

为什么从子类的超类调用方法中获得“ this”?

如何从子类中调用重写的父类方法?

如何创建强制子类调用构造函数中特定方法的抽象适配器类

是否可以从子类的超类中取代方法?

在向量C ++中从超类调用子类方法

超类引用无法在Java中调用子类方法

Java继承:在超类中调用子类方法

Java-父类正在从子类中调用方法?

确定用于调用子类中的方法的超类引用

Javascript ES6:如何从超类中定义的静态方法中检索调用子类

如何从子类中获取抽象类名称

Java:从超类构造函数中的子类调用的方法

如何使子类自动调用超类方法

Python-如何从子类实例调用超类的方法?

在Java中,“ this”在继承该方法的子类上调用的超类方法中表示什么?

有没有更简单的方法可以在Java中的子类和超类的ArrayList上调用子类的方法

Java如何从子类中调用方法

您如何在Java中从超类调用子类方法?

当子类对象存储在超类数组中时,如何调用子类方法?

从子类对象调用抽象方法

从超类对象数组中调用子类方法

如何调用抽象类中的方法

从 Java 中超类类型的 ArrayList 调用子类方法