//(1)抽象クラスの宣言
abstract class SuperClass {
int price = 100;
//共通機能は抽象クラス内で実装
void show(int taxprice) {
System.out.println(taxprice + "円です。");
}
//個々で異なる機能はヘッダーのみ宣言
abstract void calculate();
}
//(2)抽象クラスを継承
class SubA extends SuperClass {
//抽象クラスで宣言されたcalculateメソッドの
//実装(オーバーライド)
void calculate(){
show((int)(price * 1.05));
}
}
//(3)抽象クラスを継承
class SubB extends SuperClass {
//抽象クラスで宣言されたcalculateメソッドの
//実装(オーバーライド)
void calculate(){
show((int)(price * 1.03));
}
}
class ExClass18 {
public static void main(String[] args) {
SubA objectA = new SubA();
SubB objectB = new SubB();
objectA.calculate(); //(4)
objectB.calculate(); //(5)
}
}
|