public class A{
private String owner;

public String getOwner(){
return owner;
}
public void setOwner(String owner){
this.owner = owner;
}
}public class B extends A{
private String b;

public String getB(){
return b;
}
public void setB(String b){
this.b = b;
}

@Override
public String toString() {
// TODO Auto-generated method stub
return super.getOwner() + " " + b;
}
}public static void main(String[] args){
A a = new A();
a.setOwner("lily");

B b = new B();
b.setB("xx");

System.out.print(b);
}输出时,实例b的getOwner()为什么为null;?
如果在类A中定义private String owner="lily";实例b的getOwner()就会得到lily;

解决方案 »

  1.   

     super.getOwner() 调用的是父类的方法  也就是 类A中的 
      

  2.   

    当然了,应为class B extends A,你首先要初始化A中的owner,然后在实例b的getOwner()才能拿到owner的
    值啊。   public static void main(String[] args){
        A a = new A();
        a.setOwner("lily");
         
        B b = new B();
        b.setB("xx");
        //加下面的赋值方法,就没问题了
        b.setOwner(lily);
         
        System.out.print(b);
    }
      

  3.   

      A a = new A();
      a.setOwner("lily");这块语句,是new了一个父类A的对象,他不能直接被b拿到的
      

  4.   

    LZ以为B应该显示A的owner,
    main中的A对象和B对象是木有关系的
    除非b也调用setOwner(“lily“);
    就能显示,即便这样A对象和B对象也没关系