C#

클래스 기초

게임만드는학생 2025. 1. 19. 18:56

객체지향 프로그래밍에서는 코드로 표현할 때, 프로그램을 객체의 모임, 객체들의 상호작용으로 모델링하는 것이다. 

이 때, 객체를 생성하기 위한 틀이 클래스라고 생각하면 된다. 

많이 드는 비유를 여기서도 작성하자면 붕어빵의 틀과 그 틀로 만들어지는 붕어빵에 비유할 수 있다. 

(이보다 적합한 비유가 생각나진 않는다.)

클래스는 붕어빵의 틀로써 어떤 종류의 객체를 만들지 틀을 정해놓는 것이다. 

그리고 나중에 해당 객체를 만들고 싶을 때 그 클래스를 바탕으로 만드는 것이다. 

 

class Person
{
	내용
}

위와 같이 선언을 할 수 있다. 

 

클래스의 내용은 멤버변수, 멤버함수로 채워지게 된다. 

class Person
{
	string name;
	int weight;
    int height;
    
    public Person()
    {
    	
    }
    
    public void Walk()
    {
    }
}

위와 같이 변수와 함수들로 구성이 되는데, 함수같은 경우에, 일반함수도 있지만 반환형도 없고 함수이름이 클래스이름과 동일한 함수가 보일 것이다. 이는 생성자함수라고 한다. 

클래스를 객체로 생성할 때, 반드시 호출되는 함수라고 할 수 있다. 

 

이 생성자 함수에는 처음에 객체를 생성할 때, 어떤 동작을 하면 좋을지를 작성하면 된다. 

class Person
{
	string name;
	public Person()
    {
    	// "생성" 출력하기
    }
	public Person(string name) :this()
    {
    	this.name = name;
    }
}

위 코드를 보면 생성자함수도 오버로딩이 가능하다는 것을 알 수 있다. 

매개변수가 없다면 기본 생성자가 호출되면 매개변수로 string을 넣는다면 두번째 생성자가 호출되는데, 

이 때, this 키워드란 자기자신을 의미한다. 즉, 자기자신을 가리키는 포인터라고 생각하면 된다. 

 

또한 () 옆에 : this() 는 자기자신의 기본생성자를 호출하라는 의미이다. 

또한, : 오른쪽의 this() 부터 호출이 되기 때문에 기본생성자 후에 this.name=name; 코드가 실행된다. 

 

그러면 main에서 어떻게 사용할지를 살펴보자. 

static void Main(string[] args)
{
	Person p = new Person();
    
    Person p2 = new Person("sss");
}

new 키워드를 통해 객체를 생성할 수 있다. 클래스는 기본적으로 ref로 동작한다. 따라서 new는 동적으로 heap에 메모리를 할당하고 변수 p,p2는 그 주소를 저장하고 있다고 보면 된다. 

 

p는 기본생성자를 호출해서 객체를 생성했고, p2는 두번째 생성자를 호출해서 객체를 생성한다. 

 

이러한 클래스는 다른 함수의 매개변수로 넘겨줄 때도 자동으로 ref로 동작하게 된다. 

'C#' 카테고리의 다른 글

클래스의 특징  (0) 2025.01.19
클래스와 static 키워드  (0) 2025.01.19
함수  (0) 2025.01.18
반복문  (0) 2025.01.18
조건문  (0) 2025.01.18