namespace Override
{
class BaseClass
{
public virtual void echo()
{
Console.WriteLine("๊ธฐ๋ฐ ํด๋์ค");
}
public virtual void echo2()
{
Console.WriteLine("๊ธฐ๋ฐ echo2");
}
}
class DerivedClass : BaseClass
{
override public void echo()
//๋ถ๋ชจํด๋์ค ๋ด์ virtual๋ก ์ ์ธ๋์ด ์๋ ๋ฉ์๋๋ฅผ ํ์ํด๋์ค์์ ์ฌ์ ์ํ ๋
// override ํค์๋๋ฅผ ์์ ๋ถ์ด๊ณ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํด์ค๋ค.
// => ์ด๋ ๊ฒ ์ฌ์ฉํ๋๊ฒ ์ ํํ ๋ฐฉ๋ฒ์ด๊ณ ์๋ฌ๋ ๊ฒฝ๊ณ ๊ฐ ์๋ธ
{
Console.WriteLine("ํ์ ํด๋์ค");
}
public new void echo2()
{
Console.WriteLine("ํ์ echo2");
}
}
class Program
{
static void Main(string[] args)
{
DerivedClass dc = new DerivedClass();
dc.echo();
dc.echo2();
BaseClass bdc = new DerivedClass();
bdc.echo2();
}
}
}
Output
ํ์ ํด๋์ค
ํ์ echo2
๊ธฐ๋ฐ echo2
์ค๋ฒ๋ผ์ด๋(Override)
: ๋ฉ์๋ ์ฌ์ ์
virtual
:๋ถ๋ชจ(๊ธฐ๋ฐ : base) ํด๋์ค
๋ฉ์๋ ์์ ๋ถ๋ ํค์๋
- ์์(ํ์: derived) ํด๋์ค์์ ์ฌ์ ์ ๋ ์ ์๋ค. = ์ฌ์ ์ ํ์ง ์์๋ ๋๋ค.
override
: ์์(derived) ํด๋์ค
๋ฉ์๋ ์์ ๋ถ๋ ํค์๋
- ๋ถ๋ชจ๋ก๋ถํฐ ๋ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํ๋ค.
- ์ฃผ์) ๋ถ๋ชจ์ ๋ฉ์๋์ด๋ฆ๊ณผ ๊ฐ์ ๋ฉ์๋์ฌ์ผ ํ๋ฉฐ ํ์ ์์ ๊ฐ์ ํ๋กํ ํ์
๋ ์ผ์น์์ผ์ผํ๋ค.(Ex :
public void
์ ๊ฐ์๊ฒ๋ค)
new
: new
ํค์๋๋ ์ค๋ฒ๋ผ์ด๋์ ๋ค๋ฅด๊ฒ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋๋ผ๋ ๋
๋ฆฝ์ ์ธ ๋ฉ์๋๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ค.
- ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ๋ ๋ค๋ฅธ ๊ฐ๋
์ผ๋ก ๋ฉ์๋๋ฅผ ์จ๊ธฐ๋ ๊ธฐ๋ฅ์ด๋ค.