Day12 - 오버라이딩

2021. 3. 4. 02:55JAVA 공부

이번에는 오버라이딩에 대해 알아 봅시다

 

오버라이딩(overriding)

오버라이딩은 이런 뜻을 가지고 있네요

 

프로그래밍에서 오버라이딩은, 상속받은 부모의 메서드를 다시 재정의 한다 라고 생각 하시면 될 것 같습니다.

재정의 하는 것이기 때문에, 부모의 메서드와 똑같이 만들어 주고, 실행문만 바꿔주면 되는데요

 

예제를 통해 확인해 봅시다

먼저 부모가 되는 클래스 ( 상속할 클래스 )

자식이 되는 클래스 ( 상속을 받은 클래스 )

이렇게 보면, methdo2() 를 오버라이딩 한 걸 알 수 있는데요, 안에 들어있는 실행문을 빼고 보면 완전 똑같이 생긴 걸 알 수 있죠? int method2()

※ return문은 그냥 아무 의미 없습니다.

 

MainClass 에서 확인을 해봅시다.

부모의 클래스를 인스턴스화(객체화) 했습니다.

그리고 메서드1 , 메서드2를 실행했습니다.

부모의 클래스에서는 메서드3 이 정의가 되어 있지 않기 때문에, 사용이 불가능 합니다.

 

그리고 자식 클래스를 인스턴스화(객체화) 했습니다.

부모 클래스에서는 메서드 1번, 메서드 2번이 정의되어 있고,

자식 클래스에서는 메서드 2번, 메서드 3번이 정의되어 있죠

상속이라는 건 물려주는 거 라고 했습니다.

 

그러면, 자식에게는 부모에게서 메서드 1번, 메서드 2번을 물려 받았겠죠?

그래서 자식 클래스는 메서드 1번, 메서드 2번, 메서드 3번 을 다 사용할 수 있습니다.

보면, 메서드1은 부모의 메서드1을 사용을 했는데, 메서드2는 자식 클래스 Child 에서 정의 된 메서드가 사용이 되었네요? 즉. 오버라이딩 된 메서드를 사용했습니다.

 

이렇게, 오버라이딩은 부모 클래스의 메서드를 자식의 클래스에서 다시 정의하는 것을 의미 합니다.

왜 이렇게 하냐구요?

 

예를 들어서, 여러분이 부모님의 돈을 상속 받았습니다. 부모님은 건물에만 돈을 쓰셨어요. 자 그런데, 여러분은 부모님에게 상속받은 돈을 똑같이 건물에만 돈을 쓰실 건가요? 그건 이제부터 여러분의 마음이죠? 부모님이랑 똑같이 건물에만 돈을 써도 되고, 다른데 써도 되고, 이건 이제 부모님의 돈이 아닌 여러분의 돈 이잔아요?

 

다시 본론으로 돌아와서, 오버라이딩은 자식 클래스의 활용도에 맞게 메서드를 재정의 하는 겁니다.

할 수도 있고, 안 할 수도 있고.... 하지만, 상속을 받으면 거의 다 오버라이딩도 해준다고 하네요

 

이제 상속을 받으면 , 오버라이딩을 해줘야 한다 라고 생각 합시다

 

다음 예제를 보죠

저희가 상속을 공부할 때

이런 걸 만들었어요. 그런데 보면 자식 클래스에서는 각각의 멤버 변수가 있는데, ex) StudentId, subject ...

info() 메서드를 사용하면 name과 age만 출력이 됩니다.

그래서 각각 함수를 재정의 하고 싶어요

이렇게 출력이 되도록 말이죠.

그러면 부모 클래스에 있는 info() 메서드를 자식 클래스에서 각각 오버라이딩 해주면 되겠네요

확인 해봅시다.

부모 클래스는 이렇게 info() 메서드를 건드리지 않고 가만히 둡니다.

자식 클래스 에서는, info() 메서드를 오버라이딩(재정의) 해주면 됩니다.

 

이렇게, 오버라이딩에 대해서 알아 보았습니다.

 

고생하셨습니다

'JAVA 공부' 카테고리의 다른 글

Day13 - this  (0) 2021.03.04
Day13 - 오버로딩  (0) 2021.03.04
Day12 - 클래스의 상속  (0) 2021.03.03
Day12 - 변수의 기본타입과 참조타입  (0) 2021.03.03
Day12 - 패키지 와 import  (0) 2021.03.03