从超类方法调用子类方法?

sup*_*iox 3 java extends overriding subclass superclass

我的应用程序的结构与此类似:

class Father{
a(){ ... }

b(){a();}
}

class Son extends Father{
a(){ ..... }} //override
Run Code Online (Sandbox Code Playgroud)

b()没有被覆盖.当我创建Son的一个实例并且我调用b()时,父的a()被调用,但我希望它执行Son一个(如果对象是Son).可能吗?

Ral*_*lph 5

无/有

  • 不:"当我创建Son的实例并且我调用b()时,父亲的a()被称为",这是错的!
  • 是的:"但我希望它能执行一个儿子(如果对象是一个儿子).是否有可能?" - 这就是Java的行为

如果a不是静态方法,则java使用动态绑定,因此a()调用son的方法.

new Son().b()a()在Son中调用该方法.这称为动态绑定.