JAVA 16. Method Overriding
Chapter | 5 | ~ | 7 | |
---|---|---|---|---|
Ch 5 | 14 | 15 | 16 | 17 |
Ch 6 | 18 | 19 | 20 | |
Ch 7 | 21 | 22 |
Prev Section | Next Section |
---|---|
Method Overriding
메소드 오버라이딩
- 메소드 오버라이딩
- 서브클래스에서 슈퍼클래스의 메소드 중복 작성
- 슈퍼클래스의 메소드 무력화
- 항상 서브클래스에 오버라이딩한 메소드가 실행됨
- 슈퍼클래스의 메소드의 원형(이름, 인자 타입 및 개수, 리턴 타입)이 동일해야 함
class A { void f() { System.out.println("A"); } } class B extends A { void f() { System.out.println("B"); } }
B
다형성의 실현
- 메소드 오버라이딩으로 다형성의 실현
- 하나의 인터페이스에 서로 다른 구현
-
슈퍼클래스의 메소드를 서브클래스에서 각각의 목적에 맞게 다르게 구현
- 메소드 오버라이딩 코드 예시
동적 바인딩, 정적 바인딩
- 업캐스팅 된 상태에서도 오버라이딩 된 메소드가 호출된다. (동적바인딩)
- super 키워드를 이용하여 슈퍼클래스의 멤버/메소드에 접근할 수 있다. (정적바인딩)
연습문제 1 : 다음 코드의 출력을 작성하시오.
정답
오버로딩 vs 오버라이딩
비교 | 메소드 오버로딩 | 메소드 오버라이딩 |
---|---|---|
선언 | 같은 클래스나 상속 관계에서 동일한 이름의 메소드 중복 작성 | 서브 클래스에서 슈퍼 클래스에 있는 메소드와 동일한 이름의 메소드 재작성 |
관계 | 동일한 클래스 내 혹은 상속 관계 | 상속 관계 |
목적 | 이름이 같은 여러 메소드를 중복 선언하여 사용의 편리성 향상 | 슈퍼 클래스의 메소드를 무시하고 서브 클래스에서 새로운 기능의 메소드를 재정의 |
조건 | 메소드 이름 동일. 인자 개수, 타입이 달라야 함 | 메소드 이름, 인자 타입, 인자 개수, 인자 리턴 타입이 모두 동일 |
바인딩 | 정적 바인딩 | 동적 바인딩 |
Thanks for watching my post!
Comments