오버로딩(Overloading) 오버라이딩(Overriding)

dallok97·2022년 4월 13일
0

C/C++

목록 보기
5/6
post-thumbnail

🔍 오버로딩, 오버라이딩

객체지향 프로그래밍(Object Oriented Programming)의 특징
'🎨 다형성(Polymorphism)' 이 오버로딩, 오버라이딩에서 드러납니다.

🔋 오버로딩(Overloading)


😮 오버로딩이란

다중 정의는 정수, 식별자, 연산자에 대한 성질로 동일한 유효 범위 내에서도 여러 가지 뜻을 가질 수 있다.
📢 [네이버 지식백과] 오버로딩 [컴퓨터인터넷IT용어대사전]

간단하게 설명하면 같은 이름의 함수에 매개변수를 다르게 주는 것입니다.
오버로딩의 조건이 4가지 정도 있습니다.

🔊 오버로딩의 조건

  1. 함수의 이름이 같아야 한다.
  2. 매개변수의 수가 달라야 한다.
  3. 매개변수의 수가 같으면 자료형이 달라야한다.

예시를 보면 쉽게 알 수 있습니다.

📖 오버로딩 예시

void add(int num_1, int num_2)
{
	printf("%d", num_1 + num_2);
    return 0;
}
void add(float num_1, float num_2)
{
	printf("%f", num_1 + num_2);
    return 0;
}

이렇게 가능하다는 것입니다.
따라서 같은 이름의 함수를 매개변수의 수 혹은 자료형을 다르게 하여 여러개를 선언할 수 있습니다.
리턴형은 같아도 달라도 상관없습니다.



✍ 오버라이딩(Overriding)


😮 오버라이딩이란

상위 클래스에서 정의된 변수와 메소드의 내용을 하위 클래스에서 변경하여 재정의하는 것

🔊 오버라이딩의 조건

  1. 오버라이딩하고자 하는 함수가 상위 클래스에 있어야한다.
  2. 함수 이름, 매개변수의 수와 자료형이 같아야한다.
  3. 함수 리턴형이 같아야한다.
  4. 상위 함수와 내용이 동일하거나 내용이 추가되어야한다.

📖 오버라이딩 예시


class Parent
{
	public:
    	void printA(int a)
        {
        	printf("%d", a);
        }
};

class Child : public Parent
{
	public:
    	void printA(int a)
        {
        	printf("%d", a + a);
        }
};

int main(void)
{
	Parent a;
    Child b;
    a.printA(10);
    b.printA(10);
    
    return 0;
}

결과 : 1020
이렇게 결과가 나오는걸 볼 수 있습니다.
'부모클래스의 메서드는 무시하고, 자식 클래스의 메서드 기능을 사용하겠다'와 같습니다.


🎯 간단 정리

오버로딩오버라이딩
함수 이름동일동일
매개변수 수, 타입다름동일
리턴 타입상관없음동일


Refenece

profile
존중과 배려

0개의 댓글