[C#] 클래스(Class)
클래스(Class)
클래스를 이해하기 이전에 먼저 객체 지향 프로그래밍(Object Oriented Programming)을 이해하는것이 필요합니다. 객체 지향 프로그래밍은 모든 것을 객체로 표현합니다. 사람, 사물, 동물 등은 모두 객체로 표현할 수 있습니다. 객체는 속성과 기능(또는 행위)을 가지고 있습니다. 사람을 예로 들면 이름, 나이, 성별을 속성으로 가질 수 있고, 잠자기, 밥먹기, 걷기 등을 기능으로 가질 수 있습니다. 이것을 코드로 표현하면 객체의 속성은 변수, 기능은 메소드로 표현할 수 있습니다.
앞에서 설명한 객체를 만들기 위해서는 클래스가 필요합니다. 클래스는 객체를 만들기 위한 틀이고 클래스를 통해 만들어진 것이 객체 입니다. 클래스를 통해 만들어진 객체는 인스턴스(Instance, 실체)라고도 합니다. 정리하자면 클래스는 객체의 속성과 기능을 정의한 것입니다.
클래스는 참조 형식(Reference Type)이고 메소드(Method), 프로퍼티(Property), 필드(Field), 이벤트(Event)를 가질 수 있습니다. 이해를 돕기 위해 간단한 클래스를 코드로 표현해보겠습니다.
위의 코드를 보면 Person 클래스는 Name, Age의 필드를 가지고 있고, Walk의 메소드를 가지고 있습니다. Person 클래스는 실제 존재하는 인스턴스가 아닌 인스턴스를 만들기 위한 틀입니다. 다음은 실제로 존재하는 Person 인스턴스를 만들기 위한 방법입니다.
Person 클래스는 new 키워드를 통해 인스턴스를 생성합니다. 클래스와 동일한 이름으로 인스턴스를 생성하는 것을 생성자(Constructor)라고 합니다. 인스턴스를 생성하고 나서 인스턴스의 Name, Age를 설정하고 Walk() 메소드를 호출합니다. 클래스는 복합 데이터 형식입니다. 복합 데이터 형식은 참조를 가지고 있기 때문에 힙에 객체를 생성하고 person은 힙에 생성된 객체를 참조합니다. 다음은 그림은 Person 클래스의 메모리 구조를 나타냅니다.