46 lines
1.3 KiB
Java
46 lines
1.3 KiB
Java
package Test
|
|
|
|
abstract class TaxCalculator {
|
|
protected double income
|
|
|
|
public TaxCalculator(double income {
|
|
this.income = income
|
|
}
|
|
public abstract double calculateTax()
|
|
|
|
public double afterTaxIncome() {
|
|
return income - calculateTax()
|
|
|
|
}
|
|
class FlatTaxCalculator extends TaxCalculator {
|
|
private static final double RATE = 0.15
|
|
public FlatTaxCalculator(double income) super(income)
|
|
public double calculateTax() {
|
|
return income * RATE
|
|
}
|
|
|
|
public class TaxApp {
|
|
static class BracketTaxCalculator extends TaxCalculator {
|
|
public BracketTaxCalculator(double income)
|
|
super(income)
|
|
|
|
public double calculateTax() {
|
|
if (income <= 10000) return income * 0.10
|
|
else if (income <= 50000) return (10000 * 0.10) + ((income - 10000) * 0.20)
|
|
else return (10000 * 0.10) + (40000 * 0.20) + ((income - 50000) * 0.30)
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
double income = 60000
|
|
|
|
TaxCalculator flat = new FlatTaxCalculator(income)
|
|
double flatTax = flat.calculateTax()
|
|
double flatAfterTax = flat.afterTaxIncome()
|
|
|
|
TaxCalculator bracket = new BracketTaxCalculator(income)
|
|
double bracketTax = bracket.calculateTax()
|
|
double bracketAfterTax = bracket.afterTaxIncome()
|
|
}
|
|
}
|