namespace inheritEx2
{
// ๊ธฐ๋ฐ(๋ถ๋ชจ) ํด๋์ค์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์์๊ฒ
// ํ์(์์) ํด๋์ค์ ์์ฑ์์์ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
/*
C# ์์๋ ๋ถ๋ชจ ํด๋์ค ์์ฑ์ ์ค์์ ์ฌ์ฉ์ ์ง์ ์์ฑ์(๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์)๊ฐ
์กด์ฌ ํ ๋ ๋ถ๋ชจ ํด๋์ค ์์ฑ์์ ๋งค๊ฐ๋ณ์ (Ex. ๋งค๊ฐ๋ณ์ = p) ๋ฅผ ์์ํด๋์ค์์ ์ ๋ฌํ์ฌ ํ์ฉํ ์ ์๋ค.
์ฆ, ์์ ํด๋์ค์ ์ธ์คํด์ค(๋ถ๋ชจํด๋์ค๋ฅผ ์์๋ฐ๊ณ ์๋๊ฒฝ์ฐ)๋ฅผ ์์ฑํ ๋ ๋ถ๋ชจํด๋์ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ์ฌ ์ด๊ธฐํ ํ ์ ์์.
cf) Java? Python์ธ๊ฐ? ๊ฑฐ๊ธฐ์ ๋ดค๋ super() ๊ฐ์ ๊ฒ์ธ๋ฏํจ.
*/
/* sealed */ class Parent
// ์ด์ ๊ฐ์ด `sealed` ํค์๋๋ฅผ ์ด์ฉํ๋ฉด
// ์ปดํ์ผ๋ฌ์์ ์๋ฌ๋ฅผ ๋ฐ์์์ผ ์์์ ๋ถ๊ฐ๋ฅํ๊ฒ ํ๋ค.
// ์ด๋ ๊ฒ sealed๋ฅผ ํด๋์ค์ ์ด์ฉํ๋ฉด ๋ด์ธํ๋ค ๋ผ๊ณ ํ๋ค.
{
protected string name;
public Parent(string name)
{
this.name = name;
Console.WriteLine($"{this.name}.Parent()");
}
public void parent_method()
{
Console.WriteLine("parent method");
}
}
class Child : Parent
{
public Child(string name) : base(name)
// base๋ ๋ถ๋ชจ ํด๋์ค์ ์ ๊ทผํ ๋ ์ฌ์ฉ
{ // ์ด๋ ๊ฒ ์ ์ธํ๋ฉด Child(name)์ ๋งค๊ฐ๋ณ์ name์ ๋ถ๋ชจ์ ์์ฑ์๋ก ์ ๋ฌํ๋ฉฐ ํธ์ถํ๊ฒ
Console.WriteLine($"{this.name}.Child()");
}
// base ํค์๋๋ ๊ธฐ๋ฐ ํด๋์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ํค์๋์ด๋ค.
//๋ฐ๋ผ์, ๊ธฐ๋ฐํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ ๊ทผํ ๋ ์ฌ์ฉํ ์ ์๋ค.
public void child_method()
{
Console.WriteLine("child method");
base.parent_method();
//base ํค์๋๋ฅผ ์ด์ฉํด ๋ถ๋ชจํด๋์ค์ ๋ฉ์๋๋ ํธ์ถํ ์ ์๋ค.
}
}
class Program
{
static void Main(string[] args)
{
Child child = new Child("์์ด");
child.child_method();
}
}
}
Output
์์ด.Parent()
์์ด.Child()
child method
parent method
base
: ๊ธฐ๋ฐ(๋ถ๋ชจ)ํด๋์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ํค์๋์ด๋ค. base
ํค์๋๋ฅผ ํตํด ๊ธฐ๋ฐํด๋์ค์ ๋ฉค๋ฒ(ํ๋ ํน์ ๋ฉ์๋)๋ฅผ ์ ๊ทผํ ๋ ์ฌ์ฉํ ์ ์๋ค. ์ฝ๋ ์ฐธ๊ณ ํ ๊ฒ!
sealed
: ๊ธฐ๋ฐ(๋ถ๋ชจ)ํด๋์ค์ ์ฌ์ฉํ๋ ํค์๋๋ก ์ด๋ฅผ ํตํด ์ปดํ์ผ๋ฌ์์ ์๋ฌ๋ฅผ ๋ฐ์์์ผ ํด๋์ค์ ์์์ ๋ถ๊ฐ๋ฅํ๊ฒ ํ๋ค. sealed
ํค์๋๋ฅผ ํด๋์ค์ ์ด์ฉํ์ฌ ๋ด์ธํ๋ค
๋ผ๊ณ ์ผ์ปซ๋๋ค.
๊ธฐ๋ฐ(๋ถ๋ชจ)ํด๋์ค
์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์์๊ฒ ํ์(์์)ํด๋์ค
์ ์์ฑ์์์ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ base
์ sealed
๋ฅผ ์ฌ์ฉํ๋ค.
C#
์์๋ ๋ถ๋ชจ ํด๋์ค ์์ฑ์ ์ค์์ ์ฌ์ฉ์ ์ง์ ์์ฑ์(๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์)๊ฐ ์กด์ฌ ํ ๋ ๋ถ๋ชจ ํด๋์ค ์์ฑ์์ ๋งค๊ฐ๋ณ์ (Ex. ๋งค๊ฐ๋ณ์ = p) ๋ฅผ ์์ํด๋์ค์์ ์ ๋ฌํ์ฌ ํ์ฉํ ์ ์๋ค. ์ฆ, ์์ ํด๋์ค์ ์ธ์คํด์ค(๋ถ๋ชจํด๋์ค๋ฅผ ์์๋ฐ๊ณ ์๋๊ฒฝ์ฐ)๋ฅผ ์์ฑํ ๋ ๋ถ๋ชจํด๋์ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ์ฌ ์ด๊ธฐํ ํ ์ ์์. cf) Java? Python์ธ๊ฐ? ๊ฑฐ๊ธฐ์ ๋ดค๋ super()
๊ฐ์ ๊ฒ ์ธ๋ฏํจ.