import com.bruceeckel.simpletest.*;
import java.util.*;class Villain {
private String name;
protected void set(String nm) { name = nm; }
public Villain(String name) { this.name = name; }
public String toString() {
return "I'm a Villain and my name is " + name;
}
}public class Orc extends Villain {
private static Test monitor = new Test();
private int orcNumber;
public Orc(String name, int orcNumber) {
super(name);
this.orcNumber = orcNumber;
}
public void change(String name, int orcNumber) {
set(name); // Available because it's protected
this.orcNumber = orcNumber;
}
public String toString() {
return "Orc " + orcNumber + ": " + super.toString();
}
public static void main(String[] args) {
Orc orc = new Orc("Limburger", 12);
System.out.println(orc);
orc.change("Bob", 19);
System.out.println(orc);
monitor.expect(new String[] {
"Orc 12: I'm a Villain and my name is Limburger",
"Orc 19: I'm a Villain and my name is Bob"
});
}
} ///:~问题:
1."Orc 12: I'm a Villain and my name is Limburger"
"Orc 19: I'm a Villain and my name is Bob"
这两个结果是怎么得到的?前一个"Orc12:"更是不知怎样来的?
2.public String toString() {
return "Orc " + orcNumber + ": " + super.toString();
}
这个字符类型有什么作用?
import java.util.*;class Villain {
private String name;
protected void set(String nm) { name = nm; }
public Villain(String name) { this.name = name; }
public String toString() {
return "I'm a Villain and my name is " + name;
}
}public class Orc extends Villain {
private static Test monitor = new Test();
private int orcNumber;
public Orc(String name, int orcNumber) {
super(name);
this.orcNumber = orcNumber;
}
public void change(String name, int orcNumber) {
set(name); // Available because it's protected
this.orcNumber = orcNumber;
}
public String toString() {
return "Orc " + orcNumber + ": " + super.toString();
}
public static void main(String[] args) {
Orc orc = new Orc("Limburger", 12);
System.out.println(orc);
orc.change("Bob", 19);
System.out.println(orc);
monitor.expect(new String[] {
"Orc 12: I'm a Villain and my name is Limburger",
"Orc 19: I'm a Villain and my name is Bob"
});
}
} ///:~问题:
1."Orc 12: I'm a Villain and my name is Limburger"
"Orc 19: I'm a Villain and my name is Bob"
这两个结果是怎么得到的?前一个"Orc12:"更是不知怎样来的?
2.public String toString() {
return "Orc " + orcNumber + ": " + super.toString();
}
这个字符类型有什么作用?
因为orc是一个对象,println会自动调用orc的toString()方法.
下面是几个关键的方法.public void println(Object x) {
synchronized (this) {
print(x);
newLine();
}
}public void print(Object obj) {
write(String.valueOf(obj));
}public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}