U E D R , A S I H C RSS

Java Study2004/오버로딩과오버��딩

수업 내용

2004ë…„ ìž�ë°” 중간고사 3번 문제로 ìœì œ

오버��딩

기반 �래스� �미 존재하는 함수를 파� �래스�서 다시 선언하고, 구현하는 것� 함수를 재정�(Overriding)한다고 한다. 기반 �래스� �미 존재하는 함수를 파� �래스�서 재정� 하면, 파� �래스�서는 기반 �래스�서 정�� 함수가 무시�고, 파� �래스� 새로 정�� 함수가 �작하게 �다.
예를 들어 People�래스� move(int aX, int aY){this.position.x += aX;this.position.y += aY;}�는 함수가 있다. 그리고 People�래스를 �� 받� Student��는 �래스가 있다. 근� '학�'� 좀 �청해서 반대로 움��다. 그렇다면 ��받� move함수를 재정� 해줘야한다. move(int aX, int aY){this.position.x -= aX;this.position.y -= aY;}
~cpp 
People people;//초기 위치(100, 100)
people.move(10,10);//�� 후 위치(110, 110)

Student student;//초기 위치(100, 100)
student.move(10,10);//�� 후 위치(90, 90)
함수를 재정� 할 때는 기반 �래스� 만들어져 있는 함수와 파� �래스�서 재정�한 함수� 함수명과 매개변수� 타입� 완전히 같아서 서로 구별할 수 없어야 한다. 만약, 재정� 하려고 함수를 만들었는� �것� 기반 �래스� 있는 함수와 매개변수� 타입� 조금��� 다르면, �것� 재정�가 아니� 오버로딩으로 간주�다.

오버로딩

오버로딩�란 하나� 함수명� 비슷한 기능� 하면서 넘겨 받는 매개변수가 서로 다른 함수를 �개 �� 정�하는 것� �한다.
위ì—�서 ë§�한 Peopleí�´ëž˜ìФì�˜ move함수를 예를 들어보겠다. 위ì�˜ move함수는 정수형 ì�¸ìž�를 매개변수로 받아들ì�¸ë‹¤. 만약 people.move(1.1, 2.13)ë�¼ëŠ” 명령어를 실행한다면 매개변수ì�˜ 타입ì�´ 다르다는 ì—�러가 ë°œìƒ�í•  것ì�´ë‹¤. ë�”블 형ì�˜ ì�¸ìž�를 받아들ì�´ê¸° 위해 move함수를 Overloading한다. move(double aX, double aY){this.position.x += (int)aX;this.position.y += (int)aY;} ë‘� 함수 다 유효한 함수로 사용ë�œë‹¤. ë‘� 함수 중 ì–´ë–¤ 함수가 호ìœë�  것ì�¸ì§€ëŠ” 매개변수 ê°’ì—� ì�˜í•´ì„œ ê²°ì •ë�œë‹¤. 즉 오버로딩 ë�œ 함수들ì�€ 반드시 매개변수ì�˜ 타입ì�´ 달ë�¼ 서로 구별ë�  수 있어야 한다.
~cpp 
People people;//초기 위치(100, 100)
people.move(10,10);//�� 후 위치(110, 110)
people.move(5.1,11.8);//Overloadingë�œ 함수 호ìœ, ì�´ë�™ 후 위치(115, 121)

사전� �미

Overriding과 Overloading� 비슷하게 �겼기 때문� 혼�하기 쉽다. Overloading� '너무 많� 싣다', '과�하다'�는 뜻으로 �어있고, Overriding� '무시하다', '짓밟다'�고 해��다. 사전� �미를 기억해둔다면 � 개가 혼�� 때 �움� � 것�다.

Thread

강�경� 정리


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:32
Processing time 0.0045 sec