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.println(x);
}
}
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);
}
}
public class SeventhExercise2 extends Detergent
{
public void scrub()
{
append("This is my scrub()");
super.scrub();
}
public void sterilize()
{
System.out.println("This is my new function:sterilize()");
}
public static void main(String args[])
{
SeventhExercise2 se2=new SeventhExercise2();
se2.scrub();
se2.sterilize();
Detergent.main(args);
}
}
/这是thinking in java第四版上第129页练习2的题,我对基类的子类又一次进行继承后,出现了一些问题:/
孙子类的这个方法输出不正确,这句话没有加到s中,最后输出为
我用eclipse逐步调试发现,从孙子类的scrub函数出来之前,这个字符串this is my scrub()已经加入进去了,但是从这个函数出来之后,这个s就被清空了,成了空的,百思不得其解啊,望大神解答,我是个java新手,谢谢啦!!!
你通过Detergent.main(args);又创建了一个新的Cleanser对象,你输出的是这个新对象的s,当然没有那个字符串喽