저번시간에 자식이 만들어지면 부모도 만들어진다고 했으며
해당 부모의 변수를 사용하는것이라고 했는데
만약 부모와 변수이름이 곂치면 어떻게 할까?
1. 부모로써의 base
class Weapon
{
protected int power;
public Weapon()
{
power = 10;
}
}
class Gun : Weapon
{
protected int power;
public Gun()
{
power = 100;
Console.WriteLine(power);
Console.WriteLine(this.power);
Console.WriteLine(base.power);
}
}
class Program
{
static void Main(string[] args)
{
Gun g = new Gun();
}
}
부모와 자식의 이름이 곂치는 변수가 있다면 base와 this로 구분할수있다.
기본적으로는 가장 가까운놈을 사용하기 때문에 위 두 키워드가 없다며 this라고 볼수있다.
2. 부모 생성자로써의 base
생성자는 여러개를 만들수있다.
그런데 기껏 여러개 만들었는데
자식클래스를 만들면서 또 따로따로 만들어줘야한다면?
너무 귀찮은 짓이다.
그럴때 base 생성자를 이용한다.
class Weapon
{
protected int power;
public Weapon()
{
power = 10;
}
}
class Gun : Weapon
{
public Gun():base()
{
Console.WriteLine(power);
}
}
class Program
{
static void Main(string[] args)
{
Gun g = new Gun();
}
}
Gun의 생성자를 보면 뒤에 :base()가 있다.
이것은 부모의 생성자를 의미하면 파라미터가 없으므로 부모의 파라미터를 받지않는 생성자 (여기서는 power =10을 수행하는 생성자)
를 부르게된다.
728x90
'교육 노트 > C# 강의' 카테고리의 다른 글
[C# 때려잡기] C# 강의 29. 오버라이딩 (overriding) (0) | 2018.11.02 |
---|---|
[C# 때려잡기] C# 강의 28. 다중상속 (0) | 2018.11.02 |
[C# 때려잡기] C# 강의 26. 클래스의 핵심 상속 (2) | 2018.11.02 |
[C# 때려잡기] C# 강의 25. indexer (0) | 2018.10.19 |
[C# 때려잡기] C# 강의 24. 연산자 오버로딩 (4) | 2018.10.19 |