만약 틀린부분이 있으면 많은 고수님들 채찍! 채찍&당근 부탁드려요.
(저 S.M 아닙니다.^^)
- Overring(오버라이딩): 어떤 클레스에서 선언된 메소드를 현재 클레스에서 다시만들어 사용하는 행위
: 오버라이딩은 상속 개념에서 잘 나오는 것인데 위에서 말씀하시었듯이 "어떤 클래스에서 선언된 메소드를 현제 클래스에서 다시 만들어 사용하는 행위"가 바로 상속이거든요.
상위클래스(부모클래스)에서 만들어 놓은 메소드를 하위클래스(자식클래스)에서 받아서 새롭게 정의해서 쓴다는 것이지요. 참 책에 간단하게 설명한게 있어서 좀 써봅니다.
사람은 자신의 아버지로부터 태어나는데 자식은 아버지의 유전자 정보를 이어 받습니다. 여기서 아버지는 말한다(speak)라는 기능을 가지고 있습니다. 물론 자식에게도 말한다(speak)라는 기능을 물려줍니다. 그러나 아버지나 자식이 말하는 것은 완전히 일치하지 않습니다.
다른 사람에 비해 목소리는 비슷하지만 똑같지는 않지요 이렇듯이 자식은 말한다는 기능을 상속받아 자식만의 말하기로 재정의한것! 즉, 오버라이딩(overrideing) 이지요.
- Overloding(오버로딩): 어떤 클레스의 메소드가 다중정의된경우 그것들 중에서 하나를 사용하는 행위
이것도 예를 든다면
사람이라면 먹는(eat)기능이 있습니다. 어떤 음식을 먹던지 간에 그 음식물을 먹어서 에너지로 바꾸지요. 그런데 먹는데 맨날 똑같은 것만 먹나요? 아뉘지요~~ 술도먹고, 밥도먹고, 곱창두 먹고(아 우리동네 숯불 알 곱창 잘하는데 있는데 제가 토요날 칭구들과 첨 가봤는데 맛이 쥑이데요. 히히 아~ 소주 땡긴다. ^^) 암튼 이렇게 먹지요. 이게 바로 오버로딩입니다. 먹는다(eat)라는 하나의 기능(메소드)에 대해서 여러가지 음식물(파라미터)이 몸으로 들어가 그 음식물이 몸에 반응하는 결과도 다릅니다.(저같은 경우는 맥주를 먹은 다음날은 설사가... 우유를 먹음 신트림이... 보리밥을 먹으면 방귀가.. 난답니다. 헤헤)
단적으로 메소드에서 파라미터라는 인자값을 받아 드리지요? 그 파라미터가 맨날 같은 갯수에 같은 자료형일수는 없잖아요. 그래서 몇개의 인자나 어떤 자료형이 메소드의 인자값으로 들어와도 그때 그때에 맞춰서 메소드의 동작을 해주는 것이 오버로딩(overloadding) 입니다.
- 그렇다면, 'A.C()'라는 메소드가 'B.C()'로 Overring되었다면..
C라는 클레스에서는 B.C만을 사용할수 있는것인가요? 아니면, A와 B에있는 메소드 둘다를 사용할수 있는것인가요?
: 이 부분은 좀더 C#을 혹은 객체지향을 공부하시다 보면 상속이라는 것이 나오는데 그 부분을 보시면 자동적으로 이해될것 같네요.
- 둘사이의 관계가 궁금합니다. 고수님들의 지도 부탁드립니다.
: 음 그리고 마지막으로 저 오버로딩과 오버라이딩은 관계는 잘 모르겠습니다 항간에는 사귄다거나 그냥 칭구루 지낸다는 소문이 있기는 한데.. 아직 확인을.. ㅡㅡ;;
내 저넘들의 관계가 확인이 되면 혹 여관서 손잡구 나오는 것이 발견되면 제가 님께 멜루 보내드리지요.
.
.
.
.
.
그냥 쉬어가는 의미에서 웃자구 황당한 소리 해 보았습니다. 히히~
설명이 잘 이해가 되었는지 잘 모르겠네요.