불로구

23강. (JAVA) 자바 - 오버라이딩(Overriding) 본문

프로그래밍/JAVA

23강. (JAVA) 자바 - 오버라이딩(Overriding)

맹이맹이 2020. 6. 15. 00:15
반응형

위 그림은 부모 고양이가 자식 고양이에게 화분을 주는 그림이다.

오늘 배울 오버라이딩은 이 그림과 배우 유사한 기능이다!!

오버라이딩

- 자식 클래스는 부모 클래스의 private 멤버를 제외하고 모든 메소드를 상속받으며 이렇게

받은 메소드를 그대로 사용하거나, 필요에 맞게 재정의를 해서 사용할 수 있다.

- 메소드 재정의라고 하며, 상속된 일부 메소드를 자식 클래스에서 다시 수정하는 것이다.

재정의 방법

- 메소드 재정의를 하기 위해 지켜야 하는 몇 가지 규칙이 존재한다

1. 부모의 메소드와 동일한 리턴 타입, 이름, 매개 변수를 가져야 한다

2. 접근 제한을 저 강하게 하지 못한다.

3. 부모보다 예외 처리를 더 많이 할 수 없다

C는 P를 상속받고 있다.

메인에서 C에 대한 참조 변수 c를 생성하고, c를 이용해서 상속받은 method1() 메소드를 실행한다

method2()는 P에게 상속받은 메소드이지만 C에서 재정의를 했기 때문에 C 클래스의 method2()가 실행된다

method3()은 재정의가 아닌 C 클래스에서 생성한 메소드로서 C 클래스의 method3()가 실행된다.

 

첫 번째 출력과 두 번째 출력을 보면 P 클래스의 참조 변수 p를 이용하여 product()를 호출하면 P 클래스의 메소드가 실행되지만,

P를 상속받은 C 클래스의 참조 변수 c를 이용하여 product()를 호출하면 재정의된 product()가 호출

네 번째와 다섯 번째 출력은, 상속받은 C 클래스에서 color() 메소드를 재정의 하지 않았기 때문에

참조 변수 p, c 모두 부모 클래스인 P 클래스의 color() 메소드가 호출된다.

혹시나 궁금한 점은 댓글로 남겨주세요!

반응형
Comments