[c언어] 상속과 다형성

C 언어는 객체지향 프로그래밍을 직접적으로 지원하지는 않지만, 상속과 다형성과 같은 객체지향 프로그래밍의 개념을 모방할 수 있습니다.

상속 (Inheritance)

상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 것을 말합니다.

예제 코드

#include <stdio.h>

// 부모 클래스 정의
struct Parent {
    int parentData;
};

// 자식 클래스 정의
struct Child : public Parent {
    int childData;
};

int main() {
    struct Child c;
    c.parentData = 10;  // 부모 클래스의 속성에 접근
    c.childData = 20;   // 자식 클래스의 속성에 접근
    return 0;
}

위의 코드에서 Child 클래스가 Parent 클래스를 상속받았습니다. 이제 Child 클래스는 parentData 속성과 이에 접근하는 메서드를 사용할 수 있습니다.

다형성 (Polymorphism)

C 언어에서는 다형성을 함수 포인터를 이용해서 모방할 수 있습니다.

예제 코드

#include <stdio.h>

// 다형성을 이용한 함수
void printData(void* data) {
    printf("%d", *(int*)data);
}

int main() {
    int num = 10;
    printData(&num);  // 다형성을 이용해서 데이터 출력
    return 0;
}

위의 코드에서 printData 함수는 void* 타입의 매개변수를 가지고 있으므로, 어떤 타입의 데이터라도 출력할 수 있습니다.

C 언어는 객체지향 프로그래밍 언어보다는 직관적으로 상속과 다형성을 지원하지는 않지만, 위와 같은 방법을 통해 이를 모방할 수 있습니다.

참고 문헌