class Cleanser
{
private String s=new String("Cleaner");
public void append(String a)
{s+=a;}
public void dilute(){append("dilute()");}
public void apply(){append("apply()");}
public void scrub(){append("scrub()");}
public String toString(){return s;}
public static void main(String [] args){
Cleanser x=new Cleanser();
x.dilute();
x.apply();
x.scrub();
System.out.println(x);
}
}
public class Detergent extends Cleanser
{
public void scrub(){
append("Detergent.scrub()");
super.scrub();
}
public void foam(){
append("foam()");
}
public static void main(String[] args){
Detergent x=new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
System.out.println(x);
System.out.println("Testing base class:");
Cleanser.main(args);
}
}
输出是Cleanerdilute()apply()Detergent.scrub()scrub()foam()
Testing base class:
Cleanerdilute()apply()scrub()我就是不明白有System.out.println(x);
这样一条命令,为什么不会输出s的直呢??请各位高手帮忙,提前道谢!!因为小弟没分了,还请各位谅解!!下次加倍补偿!
{
private String s=new String("Cleaner");
public void append(String a)
{s+=a;}
public void dilute(){append("dilute()");}
public void apply(){append("apply()");}
public void scrub(){append("scrub()");}
public String toString(){return s;}
public static void main(String [] args){
Cleanser x=new Cleanser();
x.dilute();
x.apply();
x.scrub();
System.out.println(x);
}
}
public class Detergent extends Cleanser
{
public void scrub(){
append("Detergent.scrub()");
super.scrub();
}
public void foam(){
append("foam()");
}
public static void main(String[] args){
Detergent x=new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
System.out.println(x);
System.out.println("Testing base class:");
Cleanser.main(args);
}
}
输出是Cleanerdilute()apply()Detergent.scrub()scrub()foam()
Testing base class:
Cleanerdilute()apply()scrub()我就是不明白有System.out.println(x);
这样一条命令,为什么不会输出s的直呢??请各位高手帮忙,提前道谢!!因为小弟没分了,还请各位谅解!!下次加倍补偿!
System.out.println(x)输出时默认会调用x的toString()方法,因为你重载了toString()方法,所以
System.out.println(x)就调用了x的toString()方法,所以会输出s 的值。
弄明白了 我搞错了append()的用法,我以为它会连接字符串后还会将字符串输出呢!!