생성자 연결은 생성자가 동일하거나
기본 클래스의 다른 생성자를 호출하는 접근 방식
즉, 생성자에서 다른 생성자 호출
여러 생성자를 정의하는 클래스가 있을 때 사용
가장 많은 매개변수로 구성된 하나의 생성자에만 값을 할당
그리고 다른 두 생성자가 호출될 때 해당 생성자 호출
상속에서 기본 생성자 연결
상속에서 매개변수 있는 생성자 연결
즉 , 생성자 연결을 통해 매개변수 수가 가장 많은 생성자가 호출된다
생성자 연결 과정
상속 생성자 연결 과정
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 |