반응형
Java의 오버라이딩은 오버로딩과 이름은 비슷하지만
다른 기능을 수행합니다.
일종의 상속과 비슷한 역할을 하는데요.
기존에 있던 메소드를 공유받아서 조금 변형시켜 다르게 재정의하여
사용하는 것이 오버라이딩의 기본 개념입니다.
오버라이딩 정의
- 상속에 관련된 부모 클래스의 메소드를 상속받아 다른 형태로 재정의하는 것.
- 예를 들어 어머니로 부터 옷을 물려받아 리폼하여 새롭게 만드는 것이 바로 오버라이딩.
오버라이딩의 장점
- 비슷한 형태의 메소드를 다시 작성하지 않아 효율성 향상
- 상속으로 인해 코드의 재사용성 향상
- 비슷하지만 다른 형태의 재정의가 가능해 다향성 확립
예제 소스
public class clothes {
public void cut_height() {
System.out.println("높이를 수선하였습니다.");
}
public void cut_width() {
System.out.println("너비를 수선하였습니다.");
}
public void show_price() {
System.out.println("TAG 가격 : 50000");
}
}
class reform extends clothes {
public void cut_height() {
System.out.println("높이를 나에게 맞게 수선하였습니다.");
}
public void cut_width() {
System.out.println("너비를 나에게 맞게 수선하였습니다.");
}
}
public class wardrobe extends clothes{
public static void main(String[] args) throws IOException {
clothes ct = new clothes();
reform re = new reform();
ct.cut_width();
ct.cut_height();
re.cut_width();
re.cut_height();
re.show_price();
}
}
위의 소스는 상속의 형태를 띠고 있는 프로그램인데요.
cut_height, cut_width 메소드는 부모에게도 자식에게도 존재합니다.
해당 메소드를 상속을 통해 받았다고 하더라도
자식이 이를 재정의 했으므로
자식을 인스턴스화 하여 해당 메소드를 실행하면
자식이 정의한 메소드 결괏값이 출력됩니다.
그리고 show_price메서드는 자식이 재정의하지 않고
부모 클래스에서만 존재하기 때문에
자식 클래스를 인스턴스화 하고 이 메소드를 호출하면
부모 클래스에 존재하는 show_price 메소드가 실행되게 됩니다.
자식 클래스에서 메소드의 재정의.
이것이 바로 오버라이딩의 기본 개념입니다.
반응형
'Dev > Java' 카테고리의 다른 글
[Java] 특정 문자 기준으로 자르기 StringTokenizer 사용법 (0) | 2022.12.13 |
---|---|
[Java] 날짜 String 텍스트 날짜 포맷 변경 (0) | 2022.12.12 |
[Java] 생성자 사용법 [초기화 및 오버로딩] (0) | 2022.11.16 |
[Java] 메소드 오버로딩 정의와 예제 소스 (0) | 2022.11.15 |
[Java] 상속 사용법과 예제 구현 소스 (0) | 2022.11.14 |