关于方法的重载

今天一直在为一段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 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章