class Base{
      public void method(){
      System.out.println("base"); 
      }
}
public class A extends Base{
      public final void method(){
      System.out.println("A"); 
      }
}
method()被从写了,为什么?

解决方案 »

  1.   

    不为什么,你让ClassA成为Base的子类,而且用一样的名字重新写了method()方法,所以method()方法被重写了,我想你觉得疑问的是“public void method()”和“public final void method()”,明显后者多出一个final关键词,为什么还是重写了method方法。要知道,final关键词的意思是最终,它只意味着,这个方法到此为止,任何继承ClassA的其他子类都不能再重写method方法,但是不表示作为Base子类的A不能重写它父类的method方法。
      

  2.   

    子类相对基类调用是重写了。但是动态绑定的方法表还是那个:0X645198F--- super.method()
    0X645199F--- 类名@XXX.method()
      

  3.   

    看 JAVA编程思想 中的 前几章!
      

  4.   

    子类继承负累
    如果在子类中
    定义了与父类中相同的方法
    就叫重写了
    所以子类重写了父类的method方法