2014. 2. 28. 14:39ㆍ프로그래밍/용어정리
▶ 오버라이딩(Overriding)
- 오버라이딩은 함수의 재정의를 말한다.
- 상속받은 자식 클래스에서 부모 클래스의 멤버함수를 재정의 하는 것을 말한다.
- 오버라이딩을 할 때는 함수의 원형은 부모 클래스와 일치해야 한다.
- 이미 사용하고 있는 클래스의 멤버함수를 수정할 경우, 그 클래스를 건드리지 않고 update나 upgrade를 할 경우에 사용된다.
(펌 : 네이버 카페-취업스토리)
오버라이딩은 객체지향의 특성 중 하나인 다형성을 위해 제공되는 상속에서의 함수의 재 정의를 말합니다.
아래 오버라이딩의 예를 위해 간단한 클래스를 작성하였습니다.
//부모클래스입니다
class pitching{
public:
void speed()
{
cout << "속도 110km" << endl;
}
};
//피칭 클래스를 상속받는 아마추어클래스입니다
class amateur:public pitching
{
};
//피칭클래스를 상속받는 프로클래스입니다
class pro:public pitching
{
public:
//함수 재정의(오버라이딩)
void speed()
{
cout << "속도150km" << endl;
}
};
void main()
{
//아마추어 객체생성 후 함수호출
amateur *hns17= new amateur;
hns17->speed();
//프로객체 생성 후 함수호출
pro *Ryu=new pro;
Ryu->speed();
}
결과
메인함수에서 프로와 아마추어 클래스의 객체를 생성 후 같은 함수를 호출하였습니다.
그럼에도 결과가 다르다는 것을 알 수 있습니다.
이유는 아마추어 객체의 경우 상속받은 부모클래스의 함수를 실행하지만, 프로 객체의 경우 클래스 내에서 재 정의한 함수를 호출하였기 때문입니다.
이처럼 같은 함수명, 파라미터를 가지고 자식클래스에서 함수를 새롭게 정의하여 사용하는 것을 오버라이딩이라고 합니다.
오버로딩과 오버라이딩의 차이점
| 오버로딩 | 오버라이딩 |
함수 명 | 같음 | 같음 |
파라미터 | 변수타입 및 개수가 다름 | 같음 |
리턴 타입 | 관계없음 | 같음 |
사 용 | 같은 이름으로 함수 정의 | 자식클래스에서 부모클래스의 함수 재정의 |
오버로딩과 오버라이딩을 포스팅 하기전에 객체지향에 대해 먼저 포스팅 했어야 하는데....