이전 시간에 배운 오버로딩과 비슷한 자바 오버라이딩 (overriding)에 대해서 알아보겠습니다.
1. 메소드 오버라이딩 이란?
- 부모클래스로 부터 상속받은 메소드를 자식클래스에서 재정의하여 사용하는 것.
- 예를 들면 아버지로 부터 물려받은 연식이 오래된 차를 내가 원하는대로 튜닝해서 새로 타고 다니는 것과 같은 맥락입니다.
위의 그림을 보겠습니다.
부모(Admin) 클래스에 있는 메소드를 자식(Product)이 상속받게 되는데요.
이때 물려받은 메소드명을 동일하게 재정의 할경우 메소드 오버라이딩이 되는 것입니다.
2. 장점
- 소스코드의 재사용성이 향상됨
- 클래스에 따라 같은 이름, 다른 기능의 메소드를 만들 수 있다.
3. 예제 소스
- 소스1
class Admin{ void printSum(){ System.out.println("가격 :1000원"); } } class Product extends Admin { void printSum(){ System.out.println("가격 :2000원"); } } public class ProductStatus{ public static void main(String[] args) { Product p = new Product(); p.printSum(); } }
- 소스1 결과
- 소스2
class Admin{ void printSum(){ System.out.println("가격 :1000원"); } } class Product extends Admin { void printSum(boolean stats){ if(stats){ System.out.println("가격 :2000원"); }else{ super.printSum(); } } } public class ProductStatus{ public static void main(String[] args) { Product p = new Product(); boolean stats = false; p.printSum(stats); } }
- 소스2 결과
식탁이
감사합니다