[Unity] C# Class, 생성자(constructor) 정리

2023. 5. 2. 15:09C#

728x90
반응형
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp3
{
    public class Program
    {
        static void Main(string[] args)
        {
            Car car1 = new Car();
            car1.CarName = "Mercedes";
            car1.InstallEngine("V8");
            car1.Vroom();
            
            Car car2 = new Car();
            car2.CarName = "Audi";
            car1.InstallEngine("V6");
            car2.Vroom();
            
            Car car3 = new Car();
            car3.CarName = "Honda";
            car3.InstallEngine("V8");
            car3.Vroom();
        }

    }

    public class Car
    {
        public string CarName;
        public int doorCount;
        public string engineType;

        public void Vroom()
        {
            Console.WriteLine($"The {CarName} engines have started! VROOOOOOOM!");
            Console.ReadKey();
        }

        public void InstallEngine(string _engineType)
        {
            engineType = _engineType;
            Console.WriteLine(engineType + " Was installed in the " + CarName);
            Console.ReadKey();
        }
    }
}

위와 같이 각각의 변수에 해당 값을 넣어줄 수 있는데, 이렇게 되면 코드 줄이 너무 길어지는 상황이 발생할 수 있다.

생성자(constructor)를 넣으면 조금 간결하게 나타낼 수 있게 된다.

 

namespace Classes;

public class BankAccount
{
    public string Number { get; }
    public string Owner { get; set; }
    public decimal Balance { get; }
    
    public void MakeDeposit(decimal amount, DateTime date, string note)
    {
    }
    
    public void MakeWithdrawal(decimal amount, DateTime date, string note)
    {
    }

생성자의 예시. 생성자 이름 옆에 변수를 나열 할 수 있다.

 

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp3
{
    public class Program
    {
        static void Main(string[] args)
        {
            Car car1 = new Car("Mercedes", "V8");
            Car car2 = new Car("Audi", "V6");
            Car car3 = new Car("Honda", "V8");
            Car car4 = new Car("Toyota", "V6", 4);
        }

    }

    public class Car
    {
        public string CarName;
        public int doorCount;
        public string engineType;

        public Car()
        {
            Console.WriteLine("No parameters were given, this is blank car");
        }
        public Car(string name, string _engineType)
        {
            CarName = name;
            InstallEngine(_engineType);
            Vroom();
        }

        public Car(string name, string _engineType, int doorCount)
        {
            Console.WriteLine("Executed 4 door code");
            Console.ReadKey();
        }

        public void Vroom()
        {
            Console.WriteLine($"The {CarName} engines have started! VROOOOOOOM!");
            Console.ReadKey();
        }

        public void InstallEngine(string _engineType)
        {
            engineType = _engineType;
            Console.WriteLine(engineType + " Was installed in the " + CarName);
            Console.ReadKey();
        }
    }
}​
  • 생성자의 오버로딩이 가능하여 같은 이름을 가진 생성자를 만들 수 있다.
    • car1, car2, car3, car4 이름을 정의할 때 괄호 안에 값을 넣어주면 해당하는 생성자에 맞게 들어간다.
      car4는 이름, 엔진, 도어 수가 포함된 값이므로 int doorCount가 포함된 세번째 public Car 생성자로 가서 "Executed 4 door code"를 출력하게 된다.
  • 클래스 이름과 같은 이름으로 생성자를 지정한다.
    • public class Car -> public Car
728x90
반응형