0Pricing
C# Academy · 강의

생성자 정의

매개 변수를 받는 생성자로 인스턴스를 만듭니다.

생성자 정의은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 생성자 정의
  2. this를 사용한 생성자 연결
  3. 객체 및 컬렉션 이니셜라이저
  4. 정적 생성자
← C# Academy(으)로 돌아가기