现在的位置: 首页 > 综合 > 正文

关于方法的重载

2013年08月09日 ⁄ 综合 ⁄ 共 680字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.