谁写出这样的程序,是要被老师敲脑壳的。
类aa继承类dd,那么aa有一个变量int id了。但是重定义一个String id,引起了混乱。我想,java编译应该把这种做法看作是一个错误的。但编译居然通过,这应该算作java的一个bug。

解决方案 »

  1.   

    in java可以如此
    一般建议基类的成员变量为private,不让子类继承,如果基类中定义成了public那么在子类中又进行了得重定义的话会屏蔽掉基类中的那个同名成员变量\\
    不知对否?
      

  2.   

    赞同楼上.不算一个Bug吧,不建议这样做.
      

  3.   

    对的,不过可以用super.id来访问~
    在main()中加入如下代码:
    dd d1=new aa();
    system.out.println("id="+d1.id);
    访问的也是基类的id。
      

  4.   

    继承的目的一是为了代码的重用,二在JAVA中更重要是为了实现多态。
    使用覆盖基类域的做法既无法重用代码,又无法像覆盖方法那样有多态性,所以一般情况下不提倡的。