public interface Item
{
double purchasePrice();
}
*********************************************************
public abstract class Taxable implements Item
{
private double taxRate;
public abstract double getListPrice();
public Taxable( double rate )
{
taxRate = rate;
} // end constructor
public double purchasePrice()
{
return getListPrice() * (1 + taxRate);
} // end method purchasePrice
} // end class Taxable
*********************************************************
public class Vehicle extends Taxable
{
private double dealerCost;
private double dealerMarkup;
public Vehicle( double dealerCost, double dealerMarkup,
double taxRate)
{
super(taxRate);
this.dealerCost = dealerCost;
this.dealerMarkup = dealerMarkup;
} // end constructor
public void changeMarkup( double markup )
{
this.dealerMarkup = markup;
}
public double getListPrice()
{
return dealerCost + dealerMarkup;
}
} // end class Vehicle
*********************************************************
public class NonTaxable implements Item
{
public double purchasePrice()
{
return 0.0;
}
}
*********************************************************
public class ItemDriver
{
public static void main( String[] args )
{
Vehicle v1 = new Vehicle( 20000.00, 2500.00, 0.10);
System.out.println( v1.purchasePrice() );
v1.changeMarkup( 0 );
System.out.println( v1.purchasePrice() );
} // end method main
} // end class ItemDriver
*********************************************************