[C#] 클래스(Class), 객체(Object), 인스턴스(Instance)
클래스와 객체에 대해서는 붕어빵과 붕어빵틀로 많이들 표현하는데,
붕어빵틀은 클래스, 붕어빵은 객체에 해당한다고 한다.
클래스, Class : 붕어빵틀
- 객체를 생성하기 위한 틀 또는 설계도로, 데이터와 메서드의 집합으로 구성된다..
- 객체들의 공통점들을 기반으로 객체들을 묶이 위한 그릇이 클래스이다.
- 컴파일 이전(개발자가 쓰고있는 코드), 컴파일 타임(컴퓨터가 쓸 수 있는 코드)
객체, Object : 붕어빵
- 클래스 기반으로 생성되며 데이터를 담고 동작을 수행할 수 있는 주체. 생성자를 통해 만들어지고, 필요 시 해제하는 메서드를 가질 수 있다.
- 현실세계나 프로그래밍을 할 곳에선 존재하는 모든 사물형을 객체 라고 한다. (몬스터, 아이템 등)
- 클래스의 인스턴스 라고도 불리며 모든 인스턴스를 대표하는 포괄적인 의미를 가짐
인스턴스, Instance : 각각의 붕어빵 (붕어빵을 굽다 : 인스턴스화)
- 클래스를 객체로 만드는 과정(인스턴스화)을 통해 만들어진 구체적인 객체
- new 연산자를 통해 생성자를 호출해서 메모리에 올라온 객체의 상태를 의미
- 세부적인 속성값, 유일값을 지니며 소프트웨어의 생애주기에 참여하여 동작
- 실제 런타임에 동작하는 객체로 구체적인 실체, 각 인스턴스는 다른 변수명을 가지며 다른 속성, 식별자를 가진다.
- 런타임에서 객체가 된것 (컴퓨터가 쓰고있는 코드)
유니티에서의 예시
게임에 몬스터가 여러마리 있다고 생각해보자
- 슬라임
- 파랑버섯
- 리본돼지
이 몬스터들은 공통적으로
- 이름
- 체력
- 공격력
과 같은 값을 가지고 있을텐데
몬스터 클래스를 만들고, 그걸 바탕으로 만든 객체가 슬라임/파랑버섯/리본돼지 이다.