java问题:为什么第三条打印语句会出错呢?a.getB()返回一个B类对象,这个对象再调用这个类中的方法??

代码:classA{privateBb;privatename="张三";publicStringgetName(){retuenname;}publicBgetB(){... 代码:
class A{
private B b;
private name="张三";
public String getName(){
retuen name;
}
public B getB(){
return b;
}
}
class B{
private String title="java应用";
public String getTitle(){
return title;
}
}
public class C{
A a=new A();
System.out.println(a.getName());//成功调用,返回张三
System.out.println(a.getB());//成功调用,返回null
System.out.println(a.getB().getTitle());//不成功,出现错误
}
第三条打印语句的原理应该和第一条是一样的,为什么会出现错误,请高人指导下
展开
 我来答
Misswang1988
2012-06-18 · TA获得超过243个赞
知道答主
回答量:244
采纳率:50%
帮助的人:192万
展开全部
你是A中有B 而你在C里输出的时候提示A中的B为空,因为你没有给A set B进去。

正确代码如下:

class C{
public static void main(String[] args) {

A a=new A();
B b = new B();
a.setB(b);
System.out.println(a.getName());
System.out.println(a.getB());
System.out.println(a.getB().getTitle());
}

}

并且还要在A类和B类中提供get set方法
public class A{

private B b;
private String name="张三";

/**
* @return the name
*/
public String getName() {
return name;
}

/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}

/**
* @return the b
*/
public B getB() {
return b;
}

/**
* @param b the b to set
*/
public void setB(B b) {
this.b = b;
}

}

public class B{

private String title ="java应用";

/**
* @return the title
*/
public String getTitle() {
return title;
}

/**
* @param title the title to set
*/
public void setTitle(String title) {
this.title = title;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
修怀芹26
2012-06-18 · TA获得超过1208个赞
知道小有建树答主
回答量:695
采纳率:75%
帮助的人:454万
展开全部
因为你在 A类里并没有对b变量进行实例化,所以你第二句已经返回了null,第三句所以是不成功的。
一种修改方式为 private B b=new B();
另一种修改为:
public B getB(){
if(null==b) b=new B();
return b;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
耔舒之光
2012-06-18
知道答主
回答量:9
采纳率:0%
帮助的人:3.5万
展开全部
问题很多,你不可能编译通过,name要是String类型的。如果C是你的测试类,那么我找不到main方法!不过,看了你的意思之后,本人给你做了一下修改,主要是你的getB()没有返回一个B类型的对象!明白吗? public B getB(){
return new B();
}这样就行了。

另外,提下建议,你的Java基础远不够,从头看看Java基础,再往后学才有效果。慎重!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tsx718
2012-06-18 · TA获得超过1613个赞
知道小有建树答主
回答量:668
采纳率:0%
帮助的人:604万
展开全部
1楼正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式