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,当然没有那个字符串喽
一周热门 更多>