C언어

C언어의 구조체 vs Java의 클래스: 비교

초코너무조코 2025. 7. 7. 22:45
728x90

 

프로그래밍을 배우다 보면 자주 등장하는 개념이 C언어의 구조체(struct)와 Java의 클래스(class)입니다. 둘 다 여러 데이터를 하나의 단위로 묶어서 표현한다는 공통점이 있지만, 그 기능과 역할에는 차이가 있습니다. 이번 글에서는 구조체와 클래스를 비교해 보겠습니다.


구조체(struct)란?

C의 구조체는 데이터를 묶어서 새로운 사용자 정의 타입을 만드는 기능입니다. 예를 들어 이름, 나이, 키를 하나의 타입으로 다루고 싶다면 각각 변수로 선언하는 대신 구조체로 묶을 수 있습니다.

struct Person {
    char name[20];
    int age;
    float height;
};

구조체는 데이터를 한데 묶지만, 그 데이터에 관련된 함수를 포함하지는 않습니다.


클래스(class)란?

Java의 클래스는 구조체보다 발전된 개념으로, 데이터(속성)와 함수(메서드)를 함께 묶어서 캡슐화합니다. 객체지향 프로그래밍(OOP)의 핵심이 되는 구조입니다.

예를 들어 Java에서 Person 클래스를 정의한다면 다음과 같습니다.

public class Person {
    String name;
    int age;
    float height;

    public void sayHello() {
        System.out.println("Hello, my name is " + name);
    }
}

Java 클래스는 데이터뿐 아니라 데이터를 처리하는 메서드까지 함께 정의할 수 있습니다. 이것이 구조체와 클래스의 가장 큰 차이점입니다.


구조체와 클래스의 주요 차이점

구분 C 구조체 Java 클래스
데이터 데이터만 묶음 데이터 + 메서드
캡슐화 불가능 가능 (접근제어자 지원)
상속 불가능 가능
다형성 불가능 가능
메모리 값 타입 참조 타입
생성자/소멸자 없음 있음 (생성자, 가비지 컬렉션)

공통점

  • 여러 데이터를 하나의 단위로 묶어 표현한다는 공통점이 있습니다.
  • 사용자가 새로운 타입을 정의할 수 있다는 점도 동일합니다.

마무리

정리하자면 구조체는 데이터 중심, 클래스는 데이터와 행동을 함께 다루는 객체 중심이라는 차이가 있습니다. 

 

728x90