C# 생성자 오버로딩

Muhammad Zeeshan 2023년10월12일
  1. C#의 생성자
  2. C#의 생성자 오버로딩
  3. 생성자 오버로딩 방법
C# 생성자 오버로딩

생성자 오버로딩은 C#의 이 문서에서 다루는 항목입니다. 시작하려면 먼저 C#의 생성자가 무엇인지 이해해야 합니다.

C#의 생성자

생성자는 해당 클래스의 인스턴스가 생성될 때마다 호출되는 특정 클래스 메서드입니다. 이 메서드는 클래스의 인스턴스가 생성될 때 자동으로 트리거됩니다.

생성자의 주요 기능은 클래스의 인스턴스를 생성하기 전에 클래스의 전용 필드를 초기화하는 것입니다. 이것은 인스턴스 생성과 동시에 발생합니다.

클래스에 대한 생성자를 수동으로 빌드하지 않으면 컴파일러가 이를 수행하고 클래스의 기본 생성자로 이름을 지정합니다. zero 값은 모든 클래스의 숫자 필드에 할당되고 " " 또는 Null 값은 기본 생성자가 사용될 때 모든 문자열 클래스 및 개체 필드에 할당됩니다.

C#의 생성자 오버로딩

각각 고유한 인수 조합과 이러한 매개 변수의 다양한 수량이 있는 수많은 생성자를 생성하는 것을 생성자 오버로딩이라고 합니다. 이를 통해 평소와 다른 방식으로 클래스를 활용할 수 있습니다.

클래스 생성자의 오버로드로 인해 동일한 클래스가 컨텍스트에 따라 다르게 작동할 수 있습니다. 개체가 처음 초기화되면 기본 텍스트 메시지만 표시될 수 있습니다.

그래도 다른 인수를 사용하여 두 번째로 초기화할 때 일부 수학적 계산을 수행할 수 있습니다. C#에서 생성자를 오버로딩하는 것은 다른 프로그래밍 언어에서 메서드를 오버로딩하는 것처럼 가능하며, 생성자 오버로딩을 사용하려면 두 개 이상의 생성자가 동일한 이름을 공유해야 하지만 고유한 기능을 가지고 있어야 합니다.

생성자 오버로딩 방법

생성자 오버로딩은 여러 가지 방법으로 수행할 수 있습니다. 예를 들어 매개변수 유형, 매개변수 수, 매개변수 순서가 다릅니다.

다양한 유형의 매개변수 사용

이 절차에서는 각각 동일한 인수를 갖는 두 개의 전화 생성자를 설계합니다. 이 경우 매개 변수에 포함된 데이터 유형이 다르기 때문에 동일한 인수로 생성자를 생성할 수 있습니다.

Phone클래스에서 이름은 같지만 서로 다른 데이터 유형을 사용하는 두 개의생성자를 구성했습니다. 첫 번째 생성자는 인수로 문자열을 받는 반면 다른 생성자는 정수를 받습니다.

class Phone {
  Phone(string pbrand) {
    Console.WriteLine("Phone Brand is: " + pbrand);
  }
  Phone(int pprice) {
    Console.WriteLine("Phone Price is: " + pprice);
  }

다양한 인수를 사용하여 기본 메서드의 생성자를 오버로드했습니다. 이 경우 Object p는 문자열 유형 매개변수로 생성자를 호출하고 Object p1int 유형의 인수로 생성자를 호출합니다.

static void Main(string[] args) {
  Phone p = new Phone("iPhone x ");
  Console.WriteLine();

  Phone p1 = new Phone(10000);
  Console.ReadLine();
}
}

완전한 소스 코드:

using System;

namespace Shanii {
  class Phone {
    Phone(string pbrand) {
      Console.WriteLine("Phone Brand is: " + pbrand);
    }
    Phone(int pprice) {
      Console.WriteLine("Phone Price is: " + pprice);
    }

    static void Main(string[] args) {
      Phone p = new Phone("iPhone x ");
      Console.WriteLine();

      Phone p1 = new Phone(10000);
      Console.ReadLine();
    }
  }
}

출력:

Phone Brand is: iPhone x
Phone Price is: 10000

다른 수의 매개변수 사용

다음 예제는 Phone 생성자에 두 개의 생성자가 있음을 보여줍니다. 하나는 매개변수가 없고 다른 하나는 매개변수가 있습니다.

우리는 Phone 클래스에 같은 이름을 가진 두 개의 Phone 생성자를 만들었습니다. 하나는 매개변수가 필요하지 않은 반면 다른 하나는 하나의 매개변수가 필요합니다.

class Phone {
  Phone() {
    Console.WriteLine("A Phone Constructor with no parameter");
  }
  Phone(string pbrand) {
    Console.WriteLine("A Phone constructor with one parameter");
    Console.WriteLine("Phone Brand: " + pbrand);
  }
}

생성자를 생성했으므로 Main() 함수에서 생성자를 사용하여 각각의 메서드를 호출합니다. 보시다시피 pp1 객체는 같은 이름으로 생성자를 호출합니다.

관련 생성자생성자에 제공된 매개변수 값에 따라 호출됩니다.

static void Main(string[] args) {
  Phone p = new Phone();
  Console.WriteLine();

  Phone p1 = new Phone("Samsung S22 ultra");
  Console.ReadLine();
}

완전한 소스 코드:

using System;
namespace Shanii {

  class Phone {
    Phone() {
      Console.WriteLine("A Phone Constructor with no parameter");
    }
    Phone(string pbrand) {
      Console.WriteLine("A Phone constructor with one parameter");
      Console.WriteLine("Phone Brand: " + pbrand);
    }

    static void Main(string[] args) {
      Phone p = new Phone();
      Console.WriteLine();

      Phone p1 = new Phone("Samsung S22 ultra");
      Console.ReadLine();
    }
  }
}

출력:

A Phone Constructor with no parameter

A Phone constructor with one parameter
Phone Brand: Samsung S22 ultra

다른 순서의 매개변수 사용

여기에는 두 개의 다른 생성자가 있으며 각각 동일한 양의 인수를 가집니다. 이는 매개변수의 데이터 유형 순서가 다양한 형식을 취할 수 있기 때문에 가능합니다.

첫 번째 Phone 생성자에서 문자열 데이터 유형은 int 데이터 유형 앞에 오는 반면 두 번째 Phone 생성자에서는 int 데이터 유형이 문자열 데이터 유형 앞에 옵니다. 전화 생성자.

Phone(string pbrand, int pprice) {
  Console.WriteLine("Phone Brand: " + pbrand);
  Console.WriteLine("Phone Price: " + pprice);
}
Phone(int Andriodversion, string pbrand) {
  Console.WriteLine("Phone Andriod Version: " + Andriodversion);
  Console.WriteLine("Phone Brand: " + pbrand);
}

Main() 함수에서 다양한 순서로 인수를 전달하여 생성자를 오버로드했습니다.

static void Main(string[] args) {
  Phone p = new Phone("Samsung Galaxy s22", 10000);
  Console.WriteLine();

  Phone p1 = new Phone(15, " iPhone 13 pro");
  Console.ReadLine();
}

완전한 소스 코드:

using System;
namespace Shanii {
  class Phone {
    Phone(string pbrand, int pprice) {
      Console.WriteLine("Phone Brand: " + pbrand);
      Console.WriteLine("Phone Price: " + pprice);
    }
    Phone(int Andriodversion, string pbrand) {
      Console.WriteLine("Phone Andriod Version: " + Andriodversion);
      Console.WriteLine("Phone Brand: " + pbrand);
    }
    static void Main(string[] args) {
      Phone p = new Phone("Samsung Galaxy s22", 10000);
      Console.WriteLine();

      Phone p1 = new Phone(15, " iPhone 13 pro");
      Console.ReadLine();
    }
  }
}

출력:

Phone Brand: Samsung Galaxy s22
Phone Price: 10000

Phone Andriod Version: 15
Phone Brand:  iPhone 13 pro
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn