[Java 객체지향] 오버라이딩 (메서드 재정의)

2022. 1. 30. 22:32·Java & Kotlin
목차
  1. 오버라이딩 (Overriding)
  2. Annotation

오버라이딩 (Overriding)

  • 하위 클래스는 상위 클래스의 메서드를 그대로 사용할 수 있지만, 재정의하여 사용할 수도 있다.
  • 오버로딩과 달리 메서드의 이름, 반환 타입, 매개 변수 등 정의부는 일치해야 한다.

 

멤버십 클래스 구현하기 ← 오버라이딩을 활용해 VIP 고객은 가격을 할인해주는 기능을 구현해보자

 

VIPCustomer.java

calcPrice 상속받아 재정의

@Override
public int calcPrice(int price) {
    bonusPoint += price * bonusRatio;
    price = (int)(price * (1 - salesRatio));
    return price;
}

 

CustomerTest.java

각 인스턴스 생성하고 calcPrice(1000) 수행

Customer customerLee = new Customer("이순신",1000);
System.out.println(customerLee.calcPrice(1000));	// 1000

VIPCustomer customerKim = new VIPCustomer("김유신",10000);
System.out.println(customerKim.calcPrice(1000));	// 900

 

형변환 된 vc의 경우에는?

calcPrice는 Customer, VIPCustomer 두 클래스에 모두 존재하는데, 형변환 된 인스턴스의 calcPrice 메서드를 호출하면 어느 쪽의 메서드가 호출될까?

Customer vc = new VIPCustomer("Sue",15000);
System.out.println(vc.calcPrice(1000));	// 900
  • vc 변수의 타입은 Customer지만 인스턴스의 타입은 VIPCustomer이다.
  • 자바에서는 인스턴스의 메서드를 호출해준다. (가상 메서드의 원리)
  • 자바의 모든 메서드는 가상 메서드이다.

 

Annotation

  • 컴파일러에게 정보 제공해주는 역할
  • 없어도 문법적 오류는 나지 않음
  • @Override 애노테이션을 명시해주면 선언부가 상위의 메서드와 다른 경우 오류 발생

 

저작자표시 비영리 변경금지 (새창열림)

'Java & Kotlin' 카테고리의 다른 글

[Java 객체지향] 메서드의 재정의와 가상 메서드 원리  (0) 2022.01.31
[Java 객체지향] 상속에서 클래스의 생성과정과 형변환  (0) 2022.01.30
[Java 객체지향] 상속 활용 (멤버십 클래스 구현)  (0) 2022.01.30
  1. 오버라이딩 (Overriding)
  2. Annotation
'Java & Kotlin' 카테고리의 다른 글
  • [Java 객체지향] 다형성
  • [Java 객체지향] 메서드의 재정의와 가상 메서드 원리
  • [Java 객체지향] 상속에서 클래스의 생성과정과 형변환
  • [Java 객체지향] 상속 활용 (멤버십 클래스 구현)
Sue
Sue
개발 공부 로그
Sue's devlog개발 공부 로그
  • Sue
    Sue's devlog
    Sue
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sue
[Java 객체지향] 오버라이딩 (메서드 재정의)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.