继承问题

yoxibaga 2013-04-07 03:29:50

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;
...全文
190 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
STEEL-CHINA 2013-04-07
  • 打赏
  • 举报
回复
引用 3 楼 davidsponk 的回复:
A a = new A(); a.setOwner("lily"); 这块语句,是new了一个父类A的对象,他不能直接被b拿到的
================ 是这么一回事,你实例化B,也不给A设置值,为什么要返回给你数据呀? 如,你爸生了你,你就继承了你爸吃饭的方法,你都没有调用吃饭的方法,那不就饿死了呀。 你也可以重写吃饭这个方法,你吃了,不一定你爸也吃了。 这个例子不正确的就是你爸吃了,不代表你也吃了,举例有点勉强。
kamouswjw 2013-04-07
  • 打赏
  • 举报
回复
LZ以为B应该显示A的owner, main中的A对象和B对象是木有关系的。。。 除非b也调用setOwner(“lily“); 就能显示,即便这样A对象和B对象也没关系
davidsponk 2013-04-07
  • 打赏
  • 举报
回复
A a = new A(); a.setOwner("lily"); 这块语句,是new了一个父类A的对象,他不能直接被b拿到的
davidsponk 2013-04-07
  • 打赏
  • 举报
回复
当然了,应为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); }
a743455147 2013-04-07
  • 打赏
  • 举报
回复
super.getOwner() 调用的是父类的方法 也就是 类A中的

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧