자식 클래스가 상속 받은 부모 클래스의 메서드를 재정의하는 것
오버라이딩된 자식 메서드가 호출 시 우선권을 가짐
메서드 헤드라인 앞에 @Override 어노테이션 작성
package com.kh.p2.over.parent.model.vo;
public class Shop {
private String owner; // 가게주인
private String address; // 주소
public Shop() {
super();
}
public Shop(String owner, String address) {
super();
this.owner = owner;
this.address = address;
}
// getter, setter 메서드 생략
public void order(String str) {
System.out.println(str + address + "에 있는 " + owner + " 가게에서 주문한다.");
}
}
package com.kh.p2.over.child.model.vo;
import com.kh.p2.over.parent.model.vo.Shop;
public class CoffeeShop extends Shop {
private String coffeeName; // 커피명
private int price; // 가격
private String shopName; // 가게명
public CoffeeShop() {
super();
}
public CoffeeShop(String owner, String address, String coffeeName, int price, String shopName) {
super(owner, address);
this.coffeeName = coffeeName;
this.price = price;
this.shopName = shopName;
}
// getter, setter 메서드 생략
@Override
public void order(String str) {
System.out.println(str + " " + super.gerOwner() + "의 " + shopName + " 가게에서 "
+ coffeeName + "를 " + price + "원을 주고 주문한다.");
}
}
package com.kh.p2.over.run;
import com.kh.p2.over.parent.model.vo.Shop;
import com.kh.p2.over.child.model.vo.CoffeeShop;
public class Run {
public static void main(String[] args) {
Shop sp = new Shop("박씨네", "서울 관악구");
sp.order("부모 메서드 >> ");
CoffeeShop cs = new CoffeeShop("하람코", "서울 종로구", "딸기라떼", 4000, "메가커피");
cs.order("오버라이딩에 의한 자식 메서드 >> ");
}
}
부모 메서드 >> 서울 관악구에 있는 이씨네 가게에서 주문한다.
오버라이딩에 의한 자식 메서드 >> 하람코의 메가커피 가게에서 딸기라떼를 4000원을 주고 주문한다.
코드 사이에 주석처럼 쓰이면서 특별한 의미, 기능을 수행하도록 하는 기술로,
프로그램에 추가적인 정보를 제공해주는 메타 데이터
🌼 메타 데이터 : 데이터를 위한 데이터로, 컴파일 또는 런타임 과정에서
코드를 어떻게 처리할 것인지 알려주는 서브 데이터 (데이터에 대한 설명을 의미)