使用重写子类方法的超类方法

时间:2013-03-09 20:31:55

标签: java inheritance subclass superclass method-overriding

这是一个措辞奇怪的问题,所以如果它重复,我会道歉。

假设我有一个方法foo的课程a调用方法b

public class foo
{
    public void a()
    {
       b();
    }

    public void b()
    {
       gamma();
    }
}

现在我有一个扩展bar

的子类foo
public class bar extends foo
{
    @Override
    public void b()
    {
       theta();
    }
}

如果我致电bar.a()a会使用超类中的b方法还是子类中的b方法?也就是说,bar.b()会最终执行gamma还是会最终执行theta

2 个答案:

答案 0 :(得分:1)

它将使用子类中的方法b。这是重写方法的重点。扩展其父级的子类可以自由地创建方法的更具体的实现。当在sublcass上调用重写方法时,将使用其专用方法代替超类的方法。

答案 1 :(得分:0)

  

f我调用bar.a(),将使用超类或b中的b方法   从子类的方法?也就是说,bar.b()最终会执行gamma   还是会最终执行theta?

它将使用bar.b()方法。这是 dynamic dispatch

的结果