java中的继承问题(thinking in java中的习题),新手求解!!! 财富值96

2016-10-19 20:38发布

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新手,谢谢啦!!!

1条回答
360U861460245 - 这个人很懒,什么都没留下
1楼 · 2016-10-19 20:39.采纳回答

你通过Detergent.main(args);又创建了一个新的Cleanser对象,你输出的是这个新对象的s,当然没有那个字符串喽

一周热门 更多>