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