하.... 요즘 귀차니즘이 절 괴롭히네요
그냥 다 하기실허~~~~~~~~~~~~
그래도 블로그는 꾸준히 해보자 했는데 이런 게으름뱅이..ㅜ
자, 다시한번 마음을 잡고 오늘은 오버라이딩(Overridng)에 대해 알아보려합니다!!
그 전에 혹시 오버로딩(Overloding)을 기억하시나요?
이름도 비스무리한것이 참 헷갈림을 줄 것 같은 느낌이 오지 않나요? (저만 그런가요...?)
오버로딩에 대해서는 메소드오버로딩 이라는 제목으로 포스팅을 한적이 있습니다.
오버로딩(Overloding)에 대해 다시 정리해볼게요.
오버로딩은 같은이름의 메소드를 재정의해서 사용하는 기술이었습니다.
하지만 사용하기위한 조건이 몇가지 있습니다.
1. 메소드의 이름은 같아야한다
2. 메소드의 매개변수의 개수 또는 매개변수의 타입이 달라야 한다.
3. 리턴타입이 다르다고 해서 오버로딩은 성립하지 않는다.
오버로딩을 하기위해서는 위의 3가지 룰을 꼭 지키시구 알고계셔야 합니다.
그리고 오버라이딩과의 헷갈리지 않기 위해서도 아셔야합니다!!
3가지 규칙을 생각하며 코드를 봐보세요.
그럼 이번 글의 주인공인 오버라이딩(Overriding)에 대해 알아봅시다!
오버라이딩은 상속받은 메소드의 내용을 변경할 수 있는 기술입니다.
다른 말로 상속받은 메소드를 재정의 하는 것 입니다.
무언가 오버로딩과 비슷하지만 다르죠?
바로 상속!!
상속받은 메소드를 그대로 사용하는 경우도 있지만, 자식클래스의 입맛에 맞게 사용하고 싶은경우가 있습니다!!
음... 쉽게 말해서 성형...? (비교가 이상한거 같네요;;)
예제코드를 보기전에 오버라이딩을 하기위해서도 조건이 있으므로 그 조건을 먼저 얘기해 드리도록 하겠습니다.
1. 메소드의 이름이 같아야한다.
2. 매개변수가 같아야한다.
3. 리턴타입이 같아야한다.
예제코드를 보시죠~
잘 보이시나요?
Main.java와 EmployeeInfo.java 입니다.
제가 주황색박스로 둘러놓은 부분이 오버라이딩을 한 것 입니다.
규칙에 맞게 사용했는지 한번 비교해보죠
메소드의 이름이 같고~
매개변수도 같구요~
리턴타입도 void로 같네요~
오버로딩을 아시니 소스만 보고 쉽게 이해 하실수 있으리라 생각합니다.
어려운 개념은 아니지만 오버로딩과 비슷하여 많이 헷갈릴 수도 있습니다.
그렇기에 둘을 비교할줄 알아야 합니다.
사실 오버라이딩을 하기위해서는 조금 더 주의해야 할 점이 있습니다.
바로 접근제어자의 범위와 예외처리의 개수인데요.
제가 아직 접근제어자와 예외처리에 대해 블로그에서 다루지를 않았습니다.
지금은 이 포스팅에서 예외처리와 접근제어자부분은 제외하도록 하겠습니다.
일단 오버라이딩과 오버로딩의 기본적인 개념만 아는것만으로도 많이 알고 있다고 생각합니다.
여기까지 오버라이딩의 대해서 정리해보았습니다~
'프로그래밍 > Java' 카테고리의 다른 글
[Java] 19. 접근제어자(Access Modifier) (0) | 2015.05.13 |
---|---|
[Java] 18. super와 super() (0) | 2015.05.12 |
[Java] 16. 상속(Inheritance) (0) | 2015.04.08 |
[Java] 15. this (0) | 2015.03.30 |
[Java] 14. 생성자(Constructor) (0) | 2015.03.28 |