关于JAVA的一个疑问

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:41:39
class Tostring1
{
private String s;
private Tostring1()
{
s="angel";
}
public static Tostring1 turn()
{
return new Tostring1();
}
public String toString()
{
return s;
}
}
public class ToStringTest
{
private Tostring1 a;
public String toString()
{
return "s"+a;
}
public static void main(String args[])
{
ToStringText b=new ToStringText();
Tostring1 a=Tostring1.turn();
System.out.println(b);
/*想问下为什么我在这里输出对象b的时候,toString()中的a为NULL?为何不是直接调用a的toString()方法?*/
}
}

ToStringText 类中private Tostring1 a;没有初始化所以打出为NULL
如果要在b的toString()中打出a的toString(),必须在b的toString()中显式调用a的toString().

你把Tostring1类的构造方法声明成私有的,外面就不能调用了,你要打印一个自定义的类必须要覆盖toString方法,我写一个你看看
public class ToStringTest{
public static void main(String args[]){
Student st=new Student("cyq",21);
System.out.println(st);
}
}
class Student{
private String name;
private int age;
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String toString(){
return this.name+":"+this.age;
}
}