本帖最后由 Developping 于 2012-04-10 16:52:33 编辑

解决方案 »

  1.   

    子类:
    private String name;父类:
    private String Name;所以A类的 name一直为null;
      

  2.   

    private String name;
    private int salary;
    private int sample;//contructor overloadingpublic A(String _name,int _salary,int _sample)
    {
    super(_name,_salary);
    sample=_sample;
    }你这个有参构造,调super实例化了父类的 name,salary。 好像子类的salary没有实例化成功,
    你加输出语句试试,如果成功了
    输出结果总是
    姓名:张三;工资:5000。null拿着低工资系列!!//这个张三应该是高工资吧
    姓名:李四;工资:2000。null拿着低工资系列!!
    姓名:王五;工资:3000
      

  3.   


    public A(String _name,int _salary,int _sample)
    {
    super(_name,_salary);
    sample=_sample;
    }调用class A的构造方法的时候 super(_name,_salary); 你并未给A 的name赋值,反而对于基类进行了赋值。
    所以你this.name肯定是null了
      

  4.   

    //contructor overloadingpublic A(String _name,int _salary,int _sample)
    {
    super(_name,_salary);
    //加了下面的赋值语句才有用了
    name=_name;
    salary=_salary;

    sample=_sample;
    } 但是既然重写了父类的构造函数,为什么还要在子类中在写一遍呢?这如何体现继承所带来的overloading的好处?
      

  5.   

    大概明白你的意图,你试着换个思维,如果你不加那两赋值而让super()达到目的,问题是super里根本访问不了你子类的field啊,你叫super()怎么赋值呢?逻辑上你需要它关联上!
      

  6.   

    所以我认为super(_name,_salary)这句就该完成这些工作的,但是他只是完成了父类的工作,并没有将这个功能赋予子类。因此才困扰~~~