刚开始学习java,问个遇到的问题,希望哪位兄弟帮忙解决下,万分感谢。class Cleanser {
private String s = "Cleanser";
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.print(x);
}
} 这段程序运行结果是Cleanser dilute() apply() scrub()
为什么不是Cleanser dilute() Cleanser apply() Cleanser scrub()
private String s = "Cleanser";
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.print(x);
}
} 这段程序运行结果是Cleanser dilute() apply() scrub()
为什么不是Cleanser dilute() Cleanser apply() Cleanser scrub()
Cleanser x = new Cleanser(); //s这个时候是Cleanser
x.dilute(); //s这个时候是Cleanser dilute()
x.apply(); //s这个时候是Cleanser dilute() apply()
x.scrub(); //s这个时候是Cleanser dilute() apply() scrub()
System.out.print(x);因为你每次修改了成员变量x,那么x就是在以前的x基础上加上append传入的参数啊
Cleanser x = new Cleanser(); //因为你这就创建了一个Cleanser类型的对象 x
x.dilute(); x.apply(); x.scrub(); //所以不断调用这些方法都是对x这个对象进行操作
System.out.print(x);你执行这些方法的时候,就是不断的在s的基础上累加,注意的地方就是记住:这就是一个对象,就创建了一个对象,所有的调用方法都是等于操作一个对象,不断的对s进行累加!
是
Cleanser dilute() apply() scrub()
看看是不是你代码发错了 还是 什么别的原因
private String s = "Cleanser";
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.print(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.print(x);
System.out.print("Testing base class:");
Cleanser.main(args);
}
改成这样最后打印出来的x应该是什么?