클래스 생성자 🛠️
생성자는 객체를 초기화하는 데 사용되는 특수 메서드이다. 생성자의 장점은 클래스의 객체가 생성될 때 호출된다는 것이다. 필드의 초기 값을 설정하는 데 사용할 수 있다.
예시1:
// Car 클래스 생성
class Car
{
public string model; // 필드 생성(클래스 내의 변수 == 필드)
// Car 클래스에 대한 클래스 생성자 생성
public Car()
{
model = "Mustang"; // model의 초기값 설
}
static void Main(string[] args)
{
Car Ford = new Car(); // Car 클래스의 객체를 생성(생성자를 호출)
Console.WriteLine(Ford.model);
}
}
// 출 "Mustang"
1. 생성자를 생성할 때 알아두면 좋은 점
- 생성자 이름은 클래스 이름과 일치해야한다.
- 클래스 생성자는
반환 유형(예: void 또는 int)을 가질 수 없다.
- 객체가 생성될 때 생성자가 호출된다.
- C#에서는 클래스 생성자를 직접 만들지 않으면 자동으로 생성함. 그러나 초기값 설정을 할 수 없음.
2. 생성자 매개변수(Constructor Parameters)
생성자는 필드를 초기화하는 데 사용되는 매개변수를 사용할 수도 있다.
예시2:
class Car
{
public string model;
// 매개변수와 함께 Car클래스에 대한 생성자 생성
public Car(string modelName)
{
model = modelName;
}
static void Main(string[] args)
{
Car Ford = new Car("Mustang");
Console.WriteLine(Ford.model);
}
}
// 출력 "Mustang"
예시2
를 보면 매개변수를 추가해서 Ford라는 객체를 생성하면서 초기값을 지정한다. 예시3
을 조금 더 살펴보자.
예시3:
class Car
{
public string model;
public string color;
public int year;
// 여러가지 매개변수를 추가
public Car(string modelName, string modelColor, int modelYear)
{
model = modelName;
color = modelColor;
year = modelYear;
}
static void Main(string[] args)
{
Car Ford = new Car("Mustang", "Red", 1969);
Console.WriteLine(Ford.color + " " + Ford.year + " " + Ford.model);
}
}
// 출력: Red 1969 Mustang
Ford뿐만 아니라 Hyundai, KIA라는 객체를 생성한다고 했을 때, 매개변수의 값만 바꿔주면 각 객체마다 설정을 해줄 수 있다. 예시4와 예시5를 살펴보자. 생성자는 코드를 간결하게 바꿔주는데 도움을 준다.
예시4:
//생성자를 사용하지 않았을 때
class Car
{
public string model;
public string color;
public int year;
static void Main(string[] args)
{
Car Ford = new Car();
Ford.model = "Mustang";
Ford.color = "red";
Ford.year = 1969;
Car Hyundai = new Car();
Hyundai.model = "Avante";
Hyundai.color = "white";
Hyundai.year = 2005;
Car Kia = new Car();
Kia.model = "Ray";
Kia.color = "blue";
Kia.year = 2017;
Console.WriteLine(Ford.model);
Console.WriteLine(Hyundai.model);
Console.WriteLine(Kia.model);
}
}
예시5:
//생성자를 사용했을 때
class Car
{
public string model;
public string color;
public int year;
public Car(string modelName, string modelColor, int modelYear)
{
model = modelName;
color = modelColor;
year = modelYear;
}
static void Main(string[] args)
{
Car Ford = new Car("Mustang", "Red", 1969);
Car Hyundai = new Car("Avante", "White", 2005);
Car Kia = new Car("Ray", "blue", 2017);
Console.WriteLine(Ford.model);
Console.WriteLine(Hyundai.model);
Console.WriteLine(Kia.model);
}
}
나같은 초보자가 얼핏보기엔 코드의 길이면에서는 큰 차이가 없어보인다고 생각할지도 모르겠다. 하지만 생성자의 사용은 다음과 같은 장점을 가진다.
- 코드의 간결성 :
객체를 인스턴스화할 때 필요한 모든 초기화 작업을 한 곳에서 처리할 수 있다. 예시4
에서는 3개의 객체를 생성하는데 15줄이 사용됐다. 객체를 30개 이상 생성한다면 코드의 양은 150줄이 될 것이다. 생성자를 사용한다면 30줄이다.
2. 유지보수성 :
예를 들어 Car 클래스의 model이라는 필드의 이름을 수정할 일이 생겼다고 가정해보자. 예시4
경우라면 코드를 하나하나 수정해야한다. 하지만 예시5
의 경우에는 생성자 내부의 코드만 수정해주면 된다.
생활코딩 강의를 들었을 때 개발을 하면서 ‘극단적인 가정’을 해보면 효율성을 개선하는데 도움이 된다
는 내용이 있었다. 1,2개 였을 때는 잘 안 보이던 비효율이, 5천개라면? 1만개라면? 이라는 가정에서는 명백하게 드러나는 경우가 있다.
'게임 & 게임개발 > C# 기초' 카테고리의 다른 글
[C#기초] 프로퍼티(Property)와 Get, Set 메서드 💊 (0) | 2024.04.23 |
---|---|
[C#기초] 접근 제한자(Access Modifier)란 무엇일까? (0) | 2024.04.22 |
객체지향 프로그래밍(Object Oriented Programming)이란 무엇일까? (3) | 2024.04.19 |
클래스와 객체, 클래스 멤버 (2) | 2024.04.19 |
[C#기초] 반복문, 배열, 메소드 (0) | 2024.04.18 |