使用派生参数重载派生类中的final方法

时间:2014-07-02 17:48:50

标签: java

我进入了这篇文章(其中一个答案)中完美描述的情况:is it possible to overload a final method

我的问题是,是否有办法执行Derived类方法,或者其他方式......在我的项目中有很多帮助可以避免重复代码只是为了在方法中进行转换和执行相同的操作(这是许多)。

我担心的是将代码保存在一个位置以进行维护和调试,而且我自己找不到办法。 提前谢谢。

class Base {
  public final doSomething(Object o) {
    System.out.println("Object");
  }
}

class Derived extends Base {
  public doSomething(Integer i) {
    System.out.println("Int");
  }
}

public static void main(String[] args) {
  Base b = new Base();
  Base d = new Derived();
  b.doSomething(new Integer(0));
  d.doSomething(new Integer(0));
}

1 个答案:

答案 0 :(得分:3)

调用子类中重载方法的唯一方法是在子类类型的引用上调用它。你需要一个演员

((Derived) d).doSomething(new Integer(0));

可能导致ClassCastException或在适当类型的变量

上调用它
Derived d = new Derived();
d.doSomething(new Integer(0));