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

Java 使用派生参数重载派生类中的final方法,java,Java,我陷入了这篇文章(答案之一)中完美描述的情况: 我的问题是,是否有一种执行派生类方法的方法,或者另一种方法。。。在我的项目中,避免重复代码对于方法内部的强制转换和执行相同的操作(很多)会有很大帮助 我关心的只是将代码保存在一个位置以便维护和调试,我自己找不到方法。 提前谢谢 class Base { public final doSomething(Object o) { System.out.println("Object"); } } class Derived exten

我陷入了这篇文章(答案之一)中完美描述的情况:

我的问题是,是否有一种执行派生类方法的方法,或者另一种方法。。。在我的项目中,避免重复代码对于方法内部的强制转换和执行相同的操作(很多)会有很大帮助

我关心的只是将代码保存在一个位置以便维护和调试,我自己找不到方法。 提前谢谢

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

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

((Derived) d).doSomething(new Integer(0));
这可能会导致
ClassCastException
或对适当类型的变量调用它

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

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

((Derived) d).doSomething(new Integer(0));
这可能会导致
ClassCastException
或对适当类型的变量调用它

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

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

((Derived) d).doSomething(new Integer(0));
这可能会导致
ClassCastException
或对适当类型的变量调用它

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

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

((Derived) d).doSomething(new Integer(0));
这可能会导致
ClassCastException
或对适当类型的变量调用它

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

为什么你的基本方法是最终的?听起来你想覆盖它。简单的回答是,我不能控制代码的这一部分。原因是它内部有一些操作,如果要覆盖它,就不能忽略这些操作。。但这不是我的电话..为什么你的基本方法是final?听起来你想覆盖它。简单的回答是,我不能控制代码的这一部分。原因是它内部有一些操作,如果要覆盖它,就不能忽略这些操作。。但这不是我的电话..为什么你的基本方法是final?听起来你想覆盖它。简单的回答是,我不能控制代码的这一部分。原因是它内部有一些操作,如果要覆盖它,就不能忽略这些操作。。但这不是我的电话..为什么你的基本方法是final?听起来你想覆盖它。简单的回答是,我不能控制代码的这一部分。原因是它内部有一些操作,如果要覆盖它,就不能忽略这些操作。。但这不是我的决定……我就是这么想的,如果没有办法,那就没有了。不管怎样,谢谢你的帮助。这就是我想的,如果没有办法,也没有办法。不管怎样,谢谢你的帮助。这就是我想的,如果没有办法,也没有办法。不管怎样,谢谢你的帮助。这就是我想的,如果没有办法,也没有办法。无论如何,谢谢你的帮助。