반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 자바문법
- 이클립스
- date
- IntelliJ
- 자바
- 정규식
- 자바스크립트
- Java
- map
- 배열
- HashMap
- list
- Eclipse
- javascript
- string
- ArrayList
- html
- 인텔리제이
- 이탈리아
- Visual Studio Code
- js
- 문자열
- vscode
- input
- replace
- table
- Array
- CSS
- json
- math
Archives
- Today
- Total
어제 오늘 내일
[Java] 클래스와 객체 차이 본문
Java를 포함한 객체지향 프로그래밍(OOP)에서 가장 기본이 되는 개념이 바로 클래스(Class)와 객체(Object) 입니다. 두 용어는 자주 함께 사용되지만, 역할과 의미는 명확하게 구분됩니다. 이 글에서는 클래스와 객체의 차이를 이해하기 쉽게 정리합니다.
1. 클래스(Class)란?
클래스는 객체를 만들기 위한 설계도(blueprint)입니다.
어떤 속성(변수)과 기능(메서드)을 가진 객체를 만들 것인지 정의해 둔 구조입니다.
예:
public class Person {
String name; // 속성
int age;
void speak() { // 기능
System.out.println("Hello");
}
}
설명
- Person 클래스는 name, age, speak()라는 구성 요소를 가진 객체를 만들기 위한 설계도
2. 객체(Object)란?
객체는 클래스를 바탕으로 실제로 만들어진 실체(Instance)입니다.
클래스에서 정의한 속성과 기능을 실제로 사용할 수 있는 형태입니다.
예:
Person p = new Person();
p.name = "Tom";
p.age = 20;
p.speak();
설명
- new Person()으로 Person 객체를 생성
- 객체는 메모리에 실제로 존재하며 데이터를 가진다
3. 클래스와 객체의 관계
클래스와 객체의 관계는 다음과 같이 비유할 수 있습니다:
- 클래스 = 설계도
- 객체 = 설계도로 찍어낸 제품
또는:
- 클래스 = 붕어빵 틀
- 객체 = 실제로 만들어진 붕어빵
즉, 클래스를 먼저 정의하고, 그 클래스를 기반으로 객체를 여러 개 만들 수 있습니다.
예:
Person p1 = new Person();
Person p2 = new Person();
설명
- p1, p2는 모두 Person 클래스의 객체이지만 서로 다른 메모리 공간을 가지는 독립된 실체
4. 클래스는 정의, 객체는 사용
- 클래스는 "무엇을 만들지" 정의하는 것
- 객체는 "만들어진 결과물을 실제로 사용하는 것"
클래스는 데이터 구조와 기능의 틀을 제공하고, 객체는 그 틀에 따라 실제 데이터를 담고 동작합니다.
5. 정리
구분 클래스(Class) 객체(Object)
| 의미 | 설계도 | 설계도로 만들어진 실체 |
| 생성 시점 | 코드 작성 단계 | 프로그램 실행 중 생성 |
| 메모리 | 메모리에 로딩되지만 인스턴스는 아님 | 메모리에 실제 생성됨 |
| 역할 | 구조 정의 | 실제 데이터 보관 및 동작 수행 |
| 개수 | 1개 정의로 여러 객체 생성 가능 | 여러 개 생성 가능 |
클래스와 객체의 차이를 명확히 이해하면 객체지향 프로그래밍의 기본 원리를 좀 더 자연스럽게 받아들일 수 있게 됩니다.
반응형
'IT > Java' 카테고리의 다른 글
| [Java] void 뜻 (0) | 2025.12.19 |
|---|---|
| [Java] static이란? (0) | 2025.12.18 |
| [Java] 삼항연산자, 중첩 삼항연산자 (0) | 2025.12.17 |
| [Java] @Override 어노테이션 (0) | 2025.12.17 |
| [Java] 생성자 오버로딩 (Constructor Overloading) (1) | 2025.12.16 |
Comments
