본문 바로가기

교육 노트/C# 강의

[C# 때려잡기] C# 강의 27. base class

저번시간에 자식이 만들어지면 부모도 만들어진다고 했으며

해당 부모의 변수를 사용하는것이라고 했는데

만약 부모와 변수이름이 곂치면 어떻게 할까?



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