생성자 정의
매개 변수를 받는 생성자로 인스턴스를 만듭니다.
생성자 정의은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
생성자란 무엇인가요
생성자는 객체가 new로 생성될 때 실행되는 특수한 메서드입니다. 클래스와 이름이 같고 반환 형식이 없습니다. 생성자의 역할은 객체를 유효한 초기 상태로 만드는 것입니다.
using System;
class Dog
{
public Dog()
{
Console.WriteLine("A dog was created");
}
}
class Program
{
static void Main()
{
var d = new Dog();
}
}매개 변수가 있는 생성자
생성자는 매개 변수를 받아 호출하는 코드가 초기값을 제공하도록 할 수 있습니다. 필수 데이터를 설정하는 가장 일반적인 패턴입니다.
using System;
class Person
{
public string Name;
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
class Program
{
static void Main()
{
var p = new Person("Ada", 36);
Console.WriteLine(p.Name + " is " + p.Age);
}
}생성자에서 this 키워드 사용하기
매개 변수 이름이 필드 이름과 같을 때는 this.를 사용해 필드를 가리키고 매개 변수와 구분하세요.
using System;
class Book
{
public string Title;
public Book(string title)
{
this.Title = title;
}
}
class Program
{
static void Main()
{
var b = new Book("C# Basics");
Console.WriteLine(b.Title);
}
}기본 생성자
생성자를 작성하지 않으면 컴파일러가 매개 변수 없는 생성자를 제공합니다. 하지만 생성자를 하나라도 정의하는 즉시 이 기본 생성자는 사라지므로 직접 추가해야 합니다.
using System;
class Empty
{
// No constructor written -> compiler supplies a default one
public int Value;
}
class Program
{
static void Main()
{
var e = new Empty();
Console.WriteLine("Default Value: " + e.Value);
}
}생성자에서 유효성 검사하기
생성자는 인수를 검증하여 유효하지 않은 상태로 객체가 생성되는 일을 방지할 수 있습니다.
using System;
class Account
{
public decimal Balance;
public Account(decimal initial)
{
if (initial < 0)
throw new ArgumentException("Initial balance cannot be negative");
Balance = initial;
}
}
class Program
{
static void Main()
{
var a = new Account(100m);
Console.WriteLine("Balance: " + a.Balance);
}
}생성자 오버로드
클래스에는 매개 변수 목록이 서로 다른 여러 생성자가 있을 수 있습니다. 컴파일러가 전달한 인수에 맞는 생성자를 선택합니다.
using System;
class Point
{
public int X;
public int Y;
public Point()
{
X = 0;
Y = 0;
}
public Point(int x, int y)
{
X = x;
Y = y;
}
}
class Program
{
static void Main()
{
var origin = new Point();
var p = new Point(3, 4);
Console.WriteLine(origin.X + "," + origin.Y + " | " + p.X + "," + p.Y);
}
}생성자에서 속성 설정하기
생성자는 초기화 전용 속성이나 비공개 설정자 속성을 포함한 자동 속성에 값을 할당하는 데 자주 사용됩니다.
using System;
class Product
{
public string Name { get; }
public decimal Price { get; }
public Product(string name, decimal price)
{
Name = name;
Price = price;
}
}
class Program
{
static void Main()
{
var p = new Product("Pen", 1.50m);
Console.WriteLine(p.Name + ": " + p.Price);
}
}매개 변수 기본값
생성자 매개 변수에 기본값을 지정하면 호출하는 코드에서 해당 매개 변수를 생략할 수 있습니다. 따라서 여러 오버로드가 필요한 경우를 줄일 수 있습니다.
using System;
class Circle
{
public double Radius;
public string Color;
public Circle(double radius, string color = "black")
{
Radius = radius;
Color = color;
}
}
class Program
{
static void Main()
{
var c1 = new Circle(2);
var c2 = new Circle(3, "red");
Console.WriteLine(c1.Color + " | " + c2.Color);
}
}생성자에서 작업 수행하기
생성자는 필드에 값을 할당하는 것 외에도 파생 데이터를 계산하거나 객체에 필요한 리소스를 준비할 수 있습니다.
using System;
class Rectangle
{
public double Width;
public double Height;
public double Area;
public Rectangle(double w, double h)
{
Width = w;
Height = h;
Area = w * h;
}
}
class Program
{
static void Main()
{
var r = new Rectangle(4, 5);
Console.WriteLine("Area: " + r.Area);
}
}생성자와 필수 데이터
필수 값을 생성자에 지정하면 해당 값이 반드시 필요하게 됩니다. 값을 제공하지 않고는 객체를 만들 수 없습니다.
using System;
class User
{
public string Id;
public string Email;
public User(string id, string email)
{
Id = id;
Email = email;
}
}
class Program
{
static void Main()
{
var u = new User("u1", "a@b.com");
Console.WriteLine(u.Id + " / " + u.Email);
}
}종합하기
잘 설계된 생성자는 입력을 검증하고 필드에 값을 할당하여 객체를 완전히 사용할 준비가 된 상태로 만듭니다.
using System;
class Temperature
{
public double Celsius { get; }
public double Fahrenheit { get; }
public Temperature(double celsius)
{
if (celsius < -273.15)
throw new ArgumentException("Below absolute zero");
Celsius = celsius;
Fahrenheit = celsius * 9 / 5 + 32;
}
}
class Program
{
static void Main()
{
var t = new Temperature(25);
Console.WriteLine(t.Celsius + "C = " + t.Fahrenheit + "F");
}
}빠른 확인
생성자에 대한 이해도를 확인해 보세요.
복습
생성자는 클래스 이름을 공유하고 반환 형식이 없으며 new에서 실행됩니다. 매개변수가 있는 생성자는 초기값을 받고, this.는 필드와 매개변수를 구분합니다. 생성자를 오버로드하고 기본 매개변수 값을 사용할 수 있습니다. 생성자를 하나라도 정의하면 자동으로 생성되는 기본 생성자는 더 이상 제공되지 않습니다.
using System;
class Demo
{
public string Name;
public Demo(string name = "anon")
{
this.Name = name;
}
}
class Program
{
static void Main()
{
Console.WriteLine(new Demo().Name);
Console.WriteLine(new Demo("Kai").Name);
}
}자주 묻는 질문
“생성자 정의” 강의는 무료인가요?
네 — “생성자 정의” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“생성자 정의”에서 뭘 배우나요?
매개 변수를 받는 생성자로 인스턴스를 만듭니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“생성자 정의” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.