클래스를 가장 쉽게 이해하는 방법은 설계도 ( 청사진 ) 로 비유하는 것이다.
C# 과 같은 객체지향 언어에서는 클래스가 프로그램의 기본 단위이자 중심이라고 할수 있다.
객체 ( Object ) 와 클래스의 관계
클래스 ( Class ) 는 객체 ( Object ) 를 만들기 위한 설계도이다.
데이터 ( 필드 , 프로퍼티 ) + 기능 ( 메서드 ) 를 묶어놓은 사용자 정의 자료형이다.
- 클래스 ( class ) : 객체를 만들기 위한 틀 ( 설계도 )
- 객체 ( Object ) : 클래스에 따라 만들어진 실제 실체 ( 인스턴스 )
- 인스턴스 ( Instance ) : 특정 클래스에서 생성된 객체 ( 출처를 강조 )
클래스의 구성 요소
1. 필드 ( Field ) : 클래스 내부에 선언된 변수와 같은 데이터 ( 객체의 속성 )
2. 메서드 ( Method ) : 클래스가 수행할 수 있는 동작 ( 객체의 기능 )
3. 생성자 ( Constructor ) : 객체가 생성될 때 호출되는 특수한 메서드
4. 프로퍼티 ( Property ) : 캡슐화된 데이터 접근 방식
public class Player
{
// 필드( 멤버 변수 )
public string name;
public int hp;
// 생성자
public Player(string name, int hp)
{
this.name = name;
this.hp = hp;
}
// 메서드
public void Attack()
{
Console.WriteLine($"{name} 이(가) 공격했습니다!");
}
}
- Player 라는 클래스 생성
- name 과 hp 는 각 객체가 가지는 속성
- Attack 은 객체가 할수 있는 행동
class Program
{
static void Main(string[] args)
{
// 객체 생성
Player player1 = new Player("용사", 100);
Player player2 = new Player("마법사", 80);
// 객체 사용
Console.WriteLine($"{player1.name} 의 체력: {player1.hp}");
Console.WriteLine($"{player2.name} 의 체력: {player2.hp}");
player1.Attack();
player2.Attack();
}
}
실행 결과
용사 의 체력: 100
마법사 의 체력: 80
용사 이(가) 공격했습니다!
마법사 이(가) 공격했습니다!
클래스의 특징
클래스는 참조 타입이다.
기본적으로 클래스에 new() 할당이 발생했을 때 원본 데이터는 힙 메모리에 할당된다.
더이상 사용하지 않는 클래스의 인스턴스는 가비지 콜렉터 ( GC ) 에 의해 관리되는 대상이기도 하다.
여러 객체 생성 가능 : 같은 클래스로 다양한 객체를 찍어낼 수 있다.
OOP 핵심 : 캡슐화 , 상속 , 다형성 , 추상화의 기반이 된다.
클래스의 사용 이유
1. 재사용성 : 같은 클래스를 기반으로 여러 객체 생성 가능
2. 구조화 : 관련된 데이터와 기능을 하나로 묶을 수 있다.
3. 유지보수 : 하나의 클래스를 수정하면 관련 객체에 자동으로 반영
4. 객체 지향의 핵심 : 상속 , 다형성 , 추상화의 기반이 된다.
5. 클래스를 통해 코드를 모듈화하고, 확장 가능하게 만들어야 유지보수가 쉽다.
정리
클래스 : 설계도
객체 : 설계도로 제작한 물건
인스턴스 : 어떤 설계도에서 제작된 물건인지 출처를 강조
구성요소 : 필드 , 프로퍼티 , 메서드 , 생성자
참고자료
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/class
'⭐C Sharp > 11. 객체 지향' 카테고리의 다른 글
| 추상 클래스 ( Abstract Class ) (0) | 2025.09.28 |
|---|---|
| 인터페이스 ( Interface ) (0) | 2025.09.28 |
| this ( 매개변수 키워드 ) (0) | 2025.09.28 |
| 메모리 구조 (0) | 2025.09.22 |
| 📌Static (0) | 2025.09.22 |