생성자(Constructor)
생성자는 클래스의 객체를 생성하는 역할을 한다. 귀찮게 생성자를 구현하는 이유는 객체를 생성하는 시점에 객체의 필드를 원하는 값으로 초기하기 위해서임. 아래 생성자를 사용한 클래스 예제 참고 (즉 생성자는 초기화의 영역)
class 클래스이름
{
한정자 생성자 (매개변수목록 )
{
//
}
//필드
//메소드
}
생성자의 선언형식은 위와 같음.
- 생성자는 클래스의 이름과 같고
- 반환형식이 없음
기본 생성자(Deafult Constructor)
Class Person
{
}
위 예제 처럼 생성자 없이 정의되는 경우
Class Person
{
public Person()
{
}
}
C#에서 컴파일러는 위 예제와 같은 기본 생성자(deafult constructor)를 생성함.
기본 생성자는 위와 같이 매개변수가 없는 빈 생성자인데, 만약 생성자를 하나라도 직접 정의한다면 C# 컴파일러는 매개 변수 없는 기본 생성자를 제공하지 않음. (기본 생성자는 프로그래머의 의도와 상관없이 객체를 초기화하기 때문에 프로그래머의 의도를 유지하기 위함)
생성자 오버로딩
Class Person
{
public Person()
{
Name="";
Age="";
}
public Person(string _Name, string _Age)
{
Name=_Name;
int=_Age
}
public string Name;
public int Age;
}
그리고 생성자도 일반적인 메서드와 마찬가지로 오버로딩이 가능함.
Person person = new Person();
person.Name = "김코딩"
person.Age = 32
Person person = new Person("조코딩", 31)
그리고 이렇게 선언한 생성자는 위와 같이 사용 가능함
생성자를 사용하지 않은 클래스 vs 생성자를 사용한 클래스
생성자를 사용하지 않은 클래스 예제
namespace Constructor
{
class Car
{
//필드
public string name;
public string color;
public int price;
//메서드
public void Speed()
{
Console.WriteLine($"이름 : {name}, 색상 : {color}, 가격 : {price}");
}
}
}
객체 생성
namespace Constructor
{
class Program
{
static void Main(string[] args)
{
Car car1 = new Car();
car1.name = "Sonata";
car1.color = "White";
car1.price = 3000;
car1.Speed();
Car car2 = new Car();
car2.name = "Genesis";
car2.color = "Black";
car2.price = 9000;
car2.Speed();
Console.ReadKey();
}
}
}
출력
이름 : Sonata, 색상 : White, 가격 : 3000
이름 : Genesis, 색상 : Black, 가격 : 9000
생성자를 사용한 클래스 예제
namespace Constructor
{
class ConstCar
{
public string name;
public string color;
public int price;
public ConstCar(string name, string color ,int price)
{
this.name = name;
this.color = color;
this.price = price;
Console.WriteLine($"이름 : {name}, 색상 : {color}, 가격 : {price}");
}
}
}
객체 생성
namespace Constructor
{
class Program
{
static void Main(string[] args)
{
ConstCar car = new ConstCar("Avante", "Red", 2000);
ConstCar car2 = new ConstCar("Genesis", "Black", 9000);
Console.ReadKey();
}
}
}
출력
이름 : Sonata, 색상 : White, 가격 : 3000
이름 : Genesis, 색상 : Black, 가격 : 9000
결과적으로 출력 값은 같은데 생성자를 사용하지 않으면 인스턴스를 생성할 때마다 아래처럼 불필요하게 코드가 길어질 수 있음
Car car3 = new Car();
car3.name="Avante"
car3.color="Blue"
car3.price="2000"
car3.Speed()
.
.
.
생성자를 사용하면 아래처럼 간단하게 인스턴스를 생성할 수 있음
ConstCar car3 = new ConstCar("Avante","Blue",2000);
참조
- 이것이C#이다
- https://www.youtube.com/watch?v=Reeefq-Nxkk&list=WL&index=1
- https://woojoolog.tistory.com/19
- https://blog.hexabrain.net/141
'C#' 카테고리의 다른 글
[C# Study] 용어 정리중... (0) | 2022.08.25 |
---|---|
[C# Study] 메서드(method) (0) | 2022.08.24 |
[C# Study] Static 정적 (0) | 2022.08.22 |