namespace ClassConversionEx
{
// ์์๊ด๊ณ์ ํด๋์ค ์ฌ์ด์์์ ํ๋ณํ
class Human
{
public void showInfo()
{
Console.WriteLine("Human");
}
}
class Programmer : Human
{
public void programming()
{
Console.WriteLine("ํ๋ก๊ทธ๋๋ฐ ํ๋ ๊ฐ๋ฐ์");
}
}
class Designer : Human
{
public void design()
{
Console.WriteLine("๋์์ธํ๋ ๋์์ด๋");
}
}
class Program
{
static void Main(string[] args)
{
Human human = new Human();
human.showInfo();
human = new Programmer();
// Programmer๋ Human ํด๋์ค๋ฅผ ์์๋ฐ์๊ธฐ ๋๋ฌธ์ Humanํ์
์ด ๋ ์ ์๋ค.
human.showInfo();
// human.programming(); ์ ์ฌ์ฉํ ์ ์์.
// => human ๊ฐ์ฒด๋ ์์ํด๋์ค์ ๋ฉ์๋๋ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํธ์ถ์ด ๋ถ๊ฐ๋ฅํจ.
Programmer programmer = (Programmer)human;
// Human์ ์์์ ํํ๋ก ๋ณํ์ด ๊ฐ๋ฅํ๋ฐ, ์ด์๊ฐ์ด ๋ณํํด์ฃผ๋ฉด ์์์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์.
programmer.showInfo();
programmer.programming();
}
}
}
Output
Human
Human
Human
ํ๋ก๊ทธ๋๋ฐ ํ๋ ๊ฐ๋ฐ์
- ์ฝ๋์ ์ฃผ์์ ํตํด
ํ๋ณํ
์ ๋ชจ์ต์ ํ์ธํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ์ ์ผ๋กํ์ํด๋์ค
์ ์ธ์คํด์ค๋๋ถ๋ชจํด๋์ค
์ ์ธ์คํด์ค๋ก ํ์ฉ๋ ์ ์๋ค.
- ์
ํ๋ณํ
์ ์ฌ์ฉํ๋๊ฐ?- ๋ง์ผ
teacher
๋ผ๊ณ ํ๋ ์์ํด๋์ค๊ฐ ์๊ณ ,teacher
์ ๋ฉ์๋์คteach
๋ผ๊ณ ํ๋ ๋ฉ์๋์ ๋ค์ํ ํ์ ์ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ฅธ ์ค๋ฒ๋ก๋ฉ์ ํด์ค์ผํ๋ค๋ฉด ์์๋ฐ์ ํด๋์ค๋ค์ ํ์ ์ ๋ถ๋ชจํด๋์ค๋ก ํต์ผํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๊ณ , ์ด๋ฅผ ํตํด ๋ง์ ์์ ์ค๋ฒ๋ก๋ฉ ์ฝ๋๋ฅผ ๋ง์
- ๋ง์ผ
class Teacher
{
public void teaching(Programmer pm){}
public void teaching(Designer ds) {}
public void teaching(Business man) {}
public void teaching(Engineer eg) {}
....
}
class Teacher
{
public void teaching(Human hm){}
}
'๐ป Programming Language > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
11. ์ค๋ฒ๋ผ์ด๋ฉ(virtual, override, new) (0) | 2022.04.06 |
---|---|
10. is ์ฐ์ฐ์์ as ์ฐ์ฐ์ (0) | 2022.04.06 |
08. baseํค์๋์ sealedํ์ ์ (0) | 2022.04.06 |
07. ์์ (0) | 2022.04.06 |
06. ์ ๊ทผ์ ํ์(Access Modifier) (0) | 2022.04.06 |