class Animal {
String name;
void setName(String name) {
this.name = name;
}
}
class Dog extends Animal {
void sleep() {
System.out.println(this.name + " zzz");
}
}
class HouseDog extends Dog {
void sleep() {
System.out.println(this.name + " zzz in house");
}
void sleep(int hour) {
System.out.println(this.name + " zzz in house for " + hour + " hours");
}
}
public class Sample {
public static void main(String[] args) {
HouseDog houseDog = new HouseDog();
houseDog.setName("happy");
houseDog.sleep(); // happy zzz in house 출력
houseDog.sleep(3); // happy zzz in house for 3 hours 출력
}
}
happy zzz in house
happy zzz in house for 3 hours
Dog 클래스의 sleep 함수를 상속받은 HouseDog 클래스에서 sleep 함수를 재정의 한다.
이것을 메소드 오버라이딩이라한다.
부모 클래스에 들어있는 함수 이름은 그대로 사용하되 내가 원하는 대로 내용만 바꿔서 사용한다.
실행결과는 HouseDog에서 정의한대로 in house가 붙어서 나온다.
'자바' 카테고리의 다른 글
자바 super 부모생성자 호출 (0) | 2022.07.05 |
---|---|
자바 super 키워드 (0) | 2022.07.04 |
자바 상속받을 때, 부모클래스의 private 억세스는 제한된다. (0) | 2022.07.04 |
자바 클래스 상속 (0) | 2022.07.04 |
자바 멤버변수와 로컬변수의 차이점 (0) | 2022.07.04 |