오버라이딩, 오버로딩과의 차이점

2014. 2. 28. 14:39프로그래밍/용어정리

오버라이딩(Overriding)

- 오버라이딩은 함수의 재정의를 말한다.

- 상속받은 자식 클래스에서 부모 클래스의 멤버함수를 재정의 하는 것을 말한다.

- 오버라이딩을 할 때는 함수의 원형은 부모 클래스와 일치해야 한다.

- 이미 사용하고 있는 클래스의 멤버함수를 수정할 경우, 그 클래스를 건드리지 않고 updateupgrade를 할 경우에 사용된다.

(: 네이버 카페-취업스토리)

 

오버라이딩은 객체지향의 특성 중 하나인 다형성을 위해 제공되는 상속에서의 함수의 재 정의를 말합니다.

 

아래 오버라이딩의 예를 위해 간단한 클래스를 작성하였습니다.


//부모클래스입니다

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();

}


결과



메인함수에서 프로와 아마추어 클래스의 객체를 생성 후 같은 함수를 호출하였습니다.

그럼에도 결과가 다르다는 것을 알 수 있습니다.

이유는 아마추어 객체의 경우 상속받은 부모클래스의 함수를 실행하지만, 프로 객체의 경우 클래스 내에서 재 정의한 함수를 호출하였기 때문입니다.

 

이처럼 같은 함수명, 파라미터를 가지고 자식클래스에서 함수를 새롭게 정의하여 사용하는 것을 오버라이딩이라고 합니다.


오버로딩과 오버라이딩의 차이점

 

오버로딩 

오버라이딩 

함수 명

같음

같음

파라미터 

변수타입 및 개수가 다름 

같음

리턴 타입 

관계없음

같음

사 용

같은 이름으로 함수 정의

자식클래스에서

부모클래스의 함수 재정의


오버로딩과 오버라이딩을 포스팅 하기전에 객체지향에 대해 먼저 포스팅 했어야 하는데....

'프로그래밍 > 용어정리' 카테고리의 다른 글

전처리기란?  (0) 2014.11.29
함수와 서브루틴?  (0) 2014.11.12
바인딩과 가상함수  (2) 2014.03.03
오버로딩  (0) 2014.02.26