산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 생성자 오버로딩 마스터하기: 유연한 클래스 설계

C# 생성자 오버로딩 완벽 가이드

매개변수 개수, 타입, 순서를 다양화하여 C# 클래스를 유연하게 생성하는 생성자 오버로딩 기법을 실전 예제와 함께 익혀보세요.

C#의 생성자 오버로딩은 메서드 오버로딩과 동일한 원리입니다. 한 클래스에 이름은 같지만 시그니처(매개변수 목록)가 다른 여러 생성자를 선언할 수 있습니다. 컴파일러는 객체 생성 시 전달된 인수에 따라 적절한 생성자를 선택합니다.

본격적으로 들어가기 전에 C# 기본 생성자 개념을 이해하고 계시길 권장합니다.


1. 매개변수 개수 변경으로 오버로딩

전달하는 인수의 개수를 달리하여 생성자를 오버로딩할 수 있습니다.

class Car {
    // 매개변수 없는 생성자
    Car() { ... }
    // 매개변수 1개 생성자
    Car(string brand) { ... }
    // 매개변수 2개 생성자
    Car(string brand, int price) { ... }
}

이 Car 클래스에서 세 생성자는 각각 시그니처가 다르므로 공존 가능합니다. 컴파일러는 인수 개수에 따라 런타임에 적절한 생성자를 호출합니다.

예제: 매개변수 개수에 따른 오버로딩

using System;
namespace ConstructorOverload {
    class Car {
        // 매개변수 없는 생성자
        Car() {
            Console.WriteLine("Car constructor");
        }
        // 매개변수 1개 생성자
        Car(string brand) {
            Console.WriteLine("Car constructor with one parameter");
            Console.WriteLine("Brand: " + brand);
        }
        static void Main(string[] args) {
            // 매개변수 없는 생성자 호출
            Car car = new Car();
            Console.WriteLine();
            // 매개변수 1개 생성자 호출
            Car car2 = new Car("Bugatti");
            Console.ReadLine();
        }
    }
}

실행 결과

Car constructor
Car constructor with one parameter
Brand: Bugatti

컴파일러는 제공된 인수에 따라 적절한 생성자를 호출합니다.


2. 매개변수 타입 변경으로 오버로딩

매개변수 개수는 같지만 타입이 다른 경우에도 오버로딩 가능합니다.

class Car {
    Car(string brand) { ... }
    Car(int price) { ... }
}

두 생성자 모두 인수를 하나 받지만, 타입이 string과 int로 서로 다릅니다.

예제: 매개변수 타입에 따른 오버로딩

using System;
namespace ConstructorOverload {
    class Car {
        // string 매개변수 생성자
        Car(string brand) {
            Console.WriteLine("Brand: " + brand);
        }
        // int 매개변수 생성자
        Car(int price) {
            Console.WriteLine("Price: " + price);
        }
        static void Main(string[] args) {
            Car car = new Car("Lamborghini");
            Console.WriteLine();
            Car car2 = new Car(50000);
            Console.ReadLine();
        }
    }
}

실행 결과

Brand: Lamborghini
Price: 50000

3. 매개변수 순서 변경으로 오버로딩

매개변수의 개수와 타입이 동일하더라도 순서를 바꾸면 별도의 시그니처가 됩니다.

class Car {
    Car(string brand, int price) { ... }
    Car(int speed, string color) { ... }
}

타입의 순서가 (string, int)와 (int, string)으로 다르므로 오버로딩이 성립합니다.

예제: 매개변수 순서에 따른 오버로딩

using System;
namespace ConstructorOverload {
    class Car {
        // string 먼저, int 나중
        Car(string brand, int price) {
            Console.WriteLine("Brand: " + brand);
            Console.WriteLine("Price: " + price);
        }
        // int 먼저, string 나중
        Car(int speed, string color) {
            Console.WriteLine("Speed: " + speed + " km/hr");
            Console.WriteLine("Color: " + color);
        }
        static void Main(string[] args) {
            Car car = new Car("Bugatti", 50000);
            Console.WriteLine();
            Car car2 = new Car(60, "Red");
            Console.ReadLine();
        }
    }
}

실행 결과

Brand: Bugatti
Price: 50000
Speed: 60 km/hr
Color: Red

C 언어

  1. C# 생성자(Constructor) 총정리: 종류, 예제, 고급 패턴
  2. C# 중첩 클래스(Nested Class) 이해: 정의, 사용법, 상속
  3. C# 메서드 오버로딩 마스터하기: 개념, 예제, 모범 사례
  4. Python 연산자 오버로딩 마스터하기: 실전 가이드
  5. Java 생성자 마스터하기: 종류, 사용법, 실전 예제
  6. Java Enum 생성자 완벽 해설: 실전 예제로 이해하기
  7. 자동차 엔진 냉각수(부동액) 완전 가이드: 목적, 종류, 관리법
  8. C++ 연산자 오버로딩 실전 가이드: 문법, 접근법, 코드 예제
  9. Java 생성자 오버로딩: 실전 코드 예제로 이해하기
  10. Java 생성자 이해: 초기화와 모범 사례