用子类声明父类的对象时参数及重写的函数访问问题

public class Test {
  public static void main(String [] args){
  Base b = new Subclass();
  System.out.println(b.x);
  System.out.println(b.method());
  }
  }
  class Base{
  int x = 2;
  int method(){
  return x;
  }
  }
  class Subclass extends Base{
  int x = 3;
  int method(){
  return x;
  }
  }

结果:2 3

  声明变量b,你能访问的对象部分只是Base的部分; Subclass的特殊部分是隐藏的.这是因为编译器应意识到,e 是一个Base,而不是一个Subclass.但重写的方法除外。abstractfinal相互排斥,前者专用于继承,后者禁止继承;抽象类中的抽象 方法不能为static静态方法不能被override,只是被隐藏(hidden)了。

posted @ 2013-03-27 21:41  AndyDHG  阅读(104)  评论(0编辑  收藏  举报