关于方法的重载

    技术2025-10-13  10

    今天一直在为一段code困惑,基类A中定义了一个抽象方法,并在子类B中实现,类C继承了class B,并重载了这个方法。现在在基类中调用这个方法,那么基类会去调用哪个类中的方法呢?

     

    实际上这个问题很简单,答案是调用class C中的实现方法。如果class C中没有,则调用class C父类的方法。今天居然纠结在这里,还好DL一语令我恍然大悟。其实我在自学java时也忽略了这个地方。

     

    下面的代码就是很好的例子

     

    public abstract class A { public abstract String print();  public void fun() {  System.out.println(print()); }}

    public class B extends A{  public B() {  super.fun(); }  public String print() {  return "This is Class B !"; }  public void fun() {  System.out.println(print()); }}

     

    public class C extends B{  public C() {  super.fun(); }  public String print() {  return "This is Class C !"; } }

     

    public class Test{ public static void main(String[] args) {

      new B();  new C(); }}

     

    输出的结果就是

    This is Class B !

    This is Class C !

    This is Class C !

    最新回复(0)