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);
}
}
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.print("Testing base class:");
Cleanser.main(args);
}
}
/*
* 在Detergent类中,并不能直接调用scrub(),因为这样做将会产生递归,而这并不是你所期望的。
* 为解决此问题,Java用super关键字表示超类的意思,当前类就是从超类继承来的。
*/
输出:
Cleanserdilute()apply()Detergent.scrub()scrub()foam()
Testing base class:Cleanserdilute()apply()scrub()