객체와 클래스 - 클래스, 인스턴스, 생성자

코딩Java
읽는데 10분 소요
처음 쓰여진 날: 2026-02-18
마지막 수정일: 2026-03-29
조회수: 16

요약

정보처리기사 실기에 출제되는 객체지향의 기초 개념을 정리합니다. 클래스와 객체(인스턴스)의 관계, 속성과 메서드, 생성자의 역할을 Java 코드 예시와 함께 알아봅니다.

용어키워드
클래스(Class)설계도, 틀, 속성과 메서드 정의
객체(Object)클래스의 인스턴스, new 키워드로 생성, 실체
인스턴스(Instance)클래스로부터 생성된 객체, 메모리에 할당
속성(Field)객체의 데이터, 멤버 변수
메서드(Method)객체의 기능, 멤버 함수
생성자(Constructor)객체 생성 시 초기화, 클래스명과 동일

클래스란? 쌩기초

클래스(Class) 는 객체를 만들기 위한 설계도(틀) 입니다. 붕어빵 틀에 비유할 수 있습니다. 틀(클래스) 하나로 여러 개의 붕어빵(객체)을 만들 수 있습니다.

클래스는 속성(데이터)메서드(기능) 를 정의합니다.

속성은 필드, 멤버 변수1라고도 부르고, 메서드는 멤버 함수2라고도 부릅니다. 속성, 필드, 멤버 변수는 모두 같은 것을 가리키는 다른 이름입니다.

java
코드 하이라이팅 중...
Java 클래스의 구조 다이어그램 (C 구조체 스타일)
속성은 C 구조체와 동일한 스타일로, 메서드는 아래 별도 영역으로 배치됩니다.

C언어 구조체와 비교

C언어의 구조체(struct)를 배웠다면, 클래스는 쉽게 이해할 수 있습니다. 구조체도 "설계도를 만들고, 그 설계도로 실제 데이터 공간을 만드는" 두 단계로 나뉘었습니다. 클래스도 똑같습니다.

c
코드 하이라이팅 중...
java
코드 하이라이팅 중...
구분C언어 구조체Java 클래스
역할설계도(틀)설계도(틀)
담을 수 있는 것데이터만데이터 + 기능(메서드)
실체 만들기struct Student s1;Student s1 = new Student();
실체의 이름구조체 변수객체(인스턴스)

핵심 차이는 하나입니다. 구조체는 데이터만 묶지만, 클래스는 데이터와 기능을 함께 묶습니다.



객체(인스턴스)란? 쌩기초

객체(Object) 는 클래스(설계도)로부터 만들어진 실체입니다. new 키워드를 사용하여 생성합니다. 클래스로부터 생성된 객체를 해당 클래스의 인스턴스(Instance) 라고 합니다.

java
코드 하이라이팅 중...
  • Student클래스(설계도)입니다
  • s1, s2는 Student 클래스의 객체(인스턴스) 입니다
  • 하나의 클래스로 여러 개의 객체를 만들 수 있습니다
클래스에서 객체 생성 다이어그램 (C 구조체 스타일)
클래스(점선 설계도)에서 new로 객체(실선 실체)를 만듭니다. 객체에도 메서드가 포함됩니다.

new Student()가 실행되면?

"객체를 생성한다"는 것은 구체적으로 무엇을 의미할까요?

클래스는 설계도일 뿐, 클래스 코드 자체는 프로그램에 포함되지만 name이나 dream에 실제 값을 담을 공간은 아직 만들어지지 않았습니다. new 키워드를 사용해야 비로소 설계도를 바탕으로 메모리에 실제 공간이 만들어집니다. 이것이 "객체가 생성된다"의 의미입니다.

java
코드 하이라이팅 중...

위 코드가 실행되면:

단계일어나는 일
new메모리에 Student 클래스에 정의된 속성(name, dream)을 저장할 수 있는 공간을 확보하고, 각 속성을 기본값(null)3으로 채움
Student()생성자4를 호출(실행)하여 초기화 작업 수행. 기본 생성자5라면 추가 작업 없음
s1 =만들어진 객체의 위치(참조)6를 변수 s1에 저장

s1 안에 객체 데이터가 통째로 들어있는 것이 아닙니다. s1에는 객체가 있는 메모리 위치(참조) 가 저장됩니다. 참조란 객체가 저장된 메모리 주소를 가리키는 것으로, 주소를 적어둔 메모 같은 것입니다. 그래서 s1s2는 각각 다른 객체를 가리키며, 한쪽을 수정해도 다른 쪽에 영향을 주지 않습니다.

Java 객체 참조 다이어그램 (주소값 표시)
변수에는 객체 자체가 아닌, 객체가 있는 주소만 저장됩니다.
java
코드 하이라이팅 중...

속성과 메서드 쌩기초

객체는 속성메서드를 가집니다. 데이터와 기능을 하나의 객체로 묶는 것이 객체지향 프로그래밍의 핵심입니다.

구분설명예시
속성객체가 가지는 데이터name, dream
메서드객체가 수행하는 기능study(), getName()
java
코드 하이라이팅 중...


클래스 vs 객체 비교 쌩기초

구분클래스객체(인스턴스)
정의객체를 만들기 위한 설계도클래스를 기반으로 생성된 실체
비유붕어빵 틀붕어빵
메모리값을 담을 공간은 없음new + 생성자로 생성 시 메모리에 할당. 변수에는 참조(주소)가 저장됨
개수하나의 설계도여러 개 생성 가능
예시class Student { ... }new Student()

생성자 (Constructor) 기초

생성자는 객체가 생성될 때 자동으로 호출되어 객체를 초기화하는 특별한 메서드입니다. 클래스 이름과 동일하며, 반환 타입이 없습니다.

java
코드 하이라이팅 중...
생성자에서 this의 역할 다이어그램
this.name은 클래스 안, 메서드 밖에 선언된 속성을 가리킵니다. name은 생성자가 전달받은 매개변수입니다.

생성자의 특징:

  • 클래스 이름과 동일합니다
  • 반환 타입이 없습니다 — 일반 메서드는 앞에 voidint 같은 타입을 쓰지만, 생성자는 아무것도 쓰지 않습니다
  • 객체 생성 시 new와 함께 자동 호출됩니다
  • 생성자를 정의하지 않으면 컴파일러기본 생성자를 자동으로 만듭니다

생성자를 직접 정의하지 않으면 컴파일러가 아래와 같은 기본 생성자를 자동으로 만들어줍니다.

java
코드 하이라이팅 중...

반면 매개변수가 있는 생성자를 직접 정의하면, 기본 생성자는 자동으로 만들어지지 않습니다.

java
코드 하이라이팅 중...

관련 이론


Footnotes

  1. 클래스 안에 선언된 변수. 객체의 상태(데이터)를 저장합니다.

  2. 클래스 안에 정의된 함수. 객체의 동작(기능)을 구현합니다.

  3. null은 아직 아무 값도 넣지 않은 상태를 의미합니다. String 속성의 기본값입니다.

  4. 생성자(Constructor)는 객체가 생성될 때 자동으로 실행되어 초기화를 담당하는 특별한 메서드입니다. 아래 "생성자" 섹션에서 자세히 설명합니다.

  5. 기본 생성자란 매개변수가 없는 생성자(Student() {})입니다. 아래 "생성자" 섹션에서 자세히 설명합니다.

  6. 참조(Reference)란 객체가 저장된 메모리 주소를 가리키는 값입니다. 주소를 적어둔 메모 같은 것입니다.


학습 경로
범위: 1단계