package d;class TestClass{
private String message;
public TestClass(String message){this.message=message;}
public TestClass method () { return this;}
public String toString(){ return message;}
}public class TestClassApp {
public static void main(String[]args){
TestClass myObj = new TestClass("Java");
TestClass yourObj = new TestClass("OOP");
System.out.println(myObj.method().toString() );
System.out.println(yourObj.method().toString());
}
}
运行结果是 Java
OOP
我想知道TestClass myObj = new TestClass("Java")TestClass yourObj = new TestClass("OOP");是干什么用的 这个程序没有调用TestClass(String message)这个函数啊 最后怎么还能调用toSring()输出message呢
private String message;
public TestClass(String message){this.message=message;}
public TestClass method () { return this;}
public String toString(){ return message;}
}public class TestClassApp {
public static void main(String[]args){
TestClass myObj = new TestClass("Java");
TestClass yourObj = new TestClass("OOP");
System.out.println(myObj.method().toString() );
System.out.println(yourObj.method().toString());
}
}
运行结果是 Java
OOP
我想知道TestClass myObj = new TestClass("Java")TestClass yourObj = new TestClass("OOP");是干什么用的 这个程序没有调用TestClass(String message)这个函数啊 最后怎么还能调用toSring()输出message呢
+1
public TestClass(String message){this.message=message;} 是构造函数。
new TestClass("OOP");是调用public TestClass(String message){this.message=message;} 实现的。
构造函数是可以重载的。
如果类的定义没有任何显示声明的构造函数,则会(自动)有一个默认的构造函数(不带任何参数,就是你理解的那个“类名本身就有一个构造函数”),否则按定义的构造函数来。
new TestClass("java") 对应构造函数原型为TestClass(String )如果你的TestClass改为class TestClass{
private String message;
public TestClass(){}//默认构造方法(构造函数)
public TestClass(String message){this.message=message;}
public TestClass method () { return this;}
public String toString(){ return message;}
}而且用 TestClass tc = new TestClass();
这时就会调用默认构造,也就是public TestClass(){}如果改为
class TestClass{
private String message;
public TestClass method () { return this;}
public String toString(){ return message;}
}也一样。