【问题标题】:Calling subclasses overriden abstract methods inside parent's main method在父类的主方法中调用子类覆盖抽象方法
【发布时间】:2012-08-29 23:14:34
【问题描述】:

我有抽象类Tester,带有抽象方法test()和main方法:

    abstract class Tester {

     abstract String test();

     public static void main(String[] args) {
          doSomething();

          Tester t = new Tester() {
          @Override
              String test() {
                return "";
              }
          };        
          result = t.test();

          doSomethingElse();
     }            
    }

显然 t.test() 将始终为此类和任何其他子类返回 ""。

但我想在 main 方法中调用 test() 方法,这样任何子类都会在其执行时(在其继承的 main 方法中)调用其 自己的测试方法。

这是否可能以我想象的方式进行?我可以以某种方式将对象 t 声明为子类对象(不知道他的名字),以便他可以使用他自己的这个抽象方法的实现吗?

【问题讨论】:

标签: java methods call subclass abstract


【解决方案1】:

在我看来,您还没有完全考虑过您希望如何设计您的应用程序/对象结构。尝试看看是否有更好的方法可以组织您的对象。

您可以使您的情况正常工作的唯一方法是如果您有一个 test() 方法委托给当前实例的 test0() 方法或类似方法。这是 Java 在某些地方内部使用的技巧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    相关资源
    最近更新 更多