생성자 연결은 생성자가 동일하거나

기본 클래스의 다른 생성자를 호출하는 접근 방식

즉, 생성자에서 다른 생성자 호출

 

여러 생성자를 정의하는 클래스가 있을 때 사용

 

 

가장 많은 매개변수로 구성된 하나의 생성자에만 값을 할당

그리고 다른 두 생성자가 호출될 때 해당 생성자 호출

 

상속에서 기본 생성자 연결

 

상속에서 매개변수 있는 생성자 연결

 

즉 , 생성자 연결을 통해 매개변수 수가 가장 많은 생성자가 호출된다

 

 

생성자 연결 과정

 

 

상속 생성자 연결 과정

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace Step37_3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //new Marine();
            new Marine("홍길동");
            //new Marine("홍길동", 8);
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Step37_3
{
    internal class TerranUnit
    {
        protected string name;
        protected int damage;
        public TerranUnit()
        {
            Console.WriteLine("TerranUnit의 생성자");
        }

        public TerranUnit(string name) : this(name, 0)
        {
            this.name = name;
            Console.WriteLine("매개변수가 1개있는 생성자");
        }

        public TerranUnit(string name, int damage)
        {
            this.name = name;
            this.damage = damage;
            Console.Write("매개 변수가 2개 있는 TerranUnit 생성자");
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Step37_3
{
    internal class Marine : TerranUnit
    {
        public Marine() : base() //없으면 암시적으로 동작
        {
            Console.WriteLine("Marine 생성자");
        }

        public Marine(string name) : base(name) //매개변수 이름을 동일하게
        {
            Console.WriteLine("매개변수 1개 있는 Marine 생성자, name : {0} : ", this.name);
        }
        
        public Marine(string name, int damage) : base(name, damage)
        {
            Console.WriteLine("매개변수 2개 있는 Marine 생성자, name : {0}, damage : {1}", this.name, this.damage);
        }
    }
}

'Study > C#' 카테고리의 다른 글

[C#] 구조체  (0) 2024.06.14
[C#] 업캐스팅, 다운캐스팅  (0) 2024.06.13
[C#] virtual, override  (0) 2024.06.12
[C#] 상속  (1) 2024.06.03
[C#] static 한정자  (0) 2024.06.02

+ Recent posts