Thinking in Java Fourth Edition Bruce Eckel Chapter 6 Exercise 2

Exercise 2: Inherit a new class from class Detergent. Override scrub( ) and add a new method called sterilize( ).

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
{
  // Change a method:
  public void scrub()
  {
    append(" Detergent.scrub()");
    super.scrub(); // Call base-class version
  }
  // Add methods to the interface:
  public void foam()
  {
      append(" foam()");
  }
  // Test the new class:
  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);
  }  
} /* Output:
Cleanser dilute() apply() Detergent.scrub() scrub() foam()
Testing base class:
Cleanser dilute() apply() scrub()
*/
//:~
public class Sterilizer extends Detergent
{
    public void scrub()
    {
        append(" Sterilizer.scrub()");
    }
    public void sterilize()
    {
        append(" sterilize()");
    }
    public static void main(String[] args)
    {
        Sterilizer x = new Sterilizer();
        x.dilute();
        x.apply(); 
        x.scrub();
        x.foam();
        x.sterilize();
        System.out.println(x);
        System.out.println("Testing base class:");
        Detergent.main(args);
    }
}

Output:

Leave a Reply

Your email address will not be published. Required fields are marked *