1. 다형성 (Polymorphism)
하나의 동일한 형태를 통해서 다양한 방법으로 수행 및 동작하는 성질
2. 다형성의 특징
3. 다형성이 필요한 이유
##### 계산기 클래스 Calculator #####
abstract class Calculator{
int left, right;
public void setOprands(int left, int right){
this.left = left;
this.right = right;
}
int _sum() {
return this.left + this.right;
}
public abstract void sum();
public abstract void avg();
public void run(){
sum();
avg();
}
}
##### 덧셈 기능 클래스 CalculatorDecoPlus #####
class CalculatorDecoPlus extends Calculator {
public void sum(){
System.out.println("+ sum :"+_sum());
}
public void avg(){
System.out.println("+ avg :"+(this.left+this.right)/2);
}
}
##### 뺄셈 기능 클래스 CalculatorDecoMinus #####
class CalculatorDecoMinus extends Calculator {
public void sum(){
System.out.println("- sum :"+_sum());
}
public void avg(){
System.out.println("- avg :"+(this.left+this.right)/2);
}
}
##### 계산 구현 Main 함수 부분 #####
public class CalculatorDemo {
public static void execute(Calculator cal){ # 상위 클래스인 Calculator 타입을 받음
System.out.println("실행결과");
cal.run();
}
public static void main(String[] args) {
Calculator c1 = new CalculatorDecoPlus(); # 다형성을 이용하여 Calculator로 참조
c1.setOprands(10, 20);
Calculator c2 = new CalculatorDecoMinus(); # 다형성을 이용하여 Calculator로 참조
c2.setOprands(10, 20);
execute(c1);
execute(c2);
}
}