예제에 곱하기 메소드를 추가해야 한다고 생각해보자. 동시에 기존의 로직을 수정할 수 없는 상황에 있다. 그럼 새로운 클래스를 만들어서 기능을 추가하게 될 것이다. 아래 예제에서 붉은색으로 표시한 부분은 두개의 클래스가 중복되는 기능을 가지고 있음을 의미한다.

package offline_tutorials;
class Calculator{
public int left;
public int right;
public void sum(){
System.out.println(left+right);
}
public void avg(){
System.out.println((left+right)/2);
}
}
class multiplicationableCalculator{
public int left;
public int right;
public void sum(){
System.out.println(left+right);
}
public void avg(){
System.out.println((left+right)/2);
}
public void multiply(){
System.out.println(left*right);
}
}
public class Company {
public static void main(String[] args) {
multiplicationableCalculator c1 = new multiplicationableCalculator();
c1.left = 10;
c1.right = 20;
c1.multiply();
}
}
상속
위와 같은 문제를 해결하는 방법이 바로 상속이다.

package offline_tutorials;
class Calculator{
public int left;
public int right;
public void sum(){
System.out.println(left+right);
}
public void avg(){
System.out.println((left+right)/2);
}
}
class multiplicationableCalculator extends Calculator{
public void multiply(){
System.out.println(left*right);
}
}
public class Company {
public static void main(String[] args) {
multiplicationableCalculator c1 = new multiplicationableCalculator();
c1.left = 10;
c1.right = 20;
c1.multiply();
}
}

