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());//不成功,出现错误
}
第三条打印语句的原理应该和第一条是一样的,为什么会出现错误,请高人指导下 展开
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());//不成功,出现错误
}
第三条打印语句的原理应该和第一条是一样的,为什么会出现错误,请高人指导下 展开
4个回答
展开全部
你是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;
}
}
正确代码如下:
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你在 A类里并没有对b变量进行实例化,所以你第二句已经返回了null,第三句所以是不成功的。
一种修改方式为 private B b=new B();
另一种修改为:
public B getB(){
if(null==b) b=new B();
return b;
}
一种修改方式为 private B b=new B();
另一种修改为:
public B getB(){
if(null==b) b=new B();
return b;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题很多,你不可能编译通过,name要是String类型的。如果C是你的测试类,那么我找不到main方法!不过,看了你的意思之后,本人给你做了一下修改,主要是你的getB()没有返回一个B类型的对象!明白吗? public B getB(){
return new B();
}这样就行了。
另外,提下建议,你的Java基础远不够,从头看看Java基础,再往后学才有效果。慎重!
return new B();
}这样就行了。
另外,提下建议,你的Java基础远不够,从头看看Java基础,再往后学才有效果。慎重!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1楼正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询