์์: base ํค์๋
๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ ๋ฉค๋ฒ์ ์ ๊ทผํ ๋ ์ฌ์ฉํ ์ ์๋ค.
class Parent
{
public void SomeMethod()
{
Console.WriteLine("Parent's method");
}
}
class Child : Parent
{
public void CallParentMethod()
{
base.SomeMethod(); // ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋ ํธ์ถ
}
}
์ ์์๋ base๊ฐ ์์ด๋ ์ ์๋ํ๋ค. (๋ถ๋ชจ ํด๋์ค๋ก๋ถํฐ ์์๋ฐ์๊ธฐ ๋๋ฌธ์) ํ์ง๋ง ๊ฐ๋ ์ฑ์ ์ํด base๋ฅผ ๋ถ์ฌ์ฃผ๊ธฐ๋ ํ๋ค.
๋ง์ฝ ์ค๋ฒ๋ผ์ด๋ฉ์ ํ๋ค๋ฉด ๊ผญ base ํค์๋๋ก ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋์ ํ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ๊ตฌ๋ถํด์ค์ผ ํ๋ค.
class Parent
{
public virtual void SomeMethod()
{
Console.WriteLine("Parent's method");
}
}
class Child : Parent
{
public override void SomeMethod()
{
base.SomeMethod(); // ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋ ํธ์ถ
Console.WriteLine("Child's method");
}
}
(๋ง์ฝ ์๋ํ์ง ์์ ์์ ๋ฑ์ ๋ง๊ณ ์ถ๋ค๋ฉด, ํด๋์ค ์์ sealed๋ฅผ ๋ถ์ด๋ฉด ์์์ด ๋ถ๊ฐ๋ฅํ๋๋ก ํด๋์ค๋ฅผ ์ ์ธํ ์ ์๋ค.)
is / as
if (A is B) : B๊ฐ A์ ์ํ ์ธ์คํด์ค์ธ์ง ํ์ธํด์ true/false๋ฅผ ๋ฐํํจ
class Animal { }
class Dog : Animal { }
class Program
{
static void Main()
{
Animal myAnimal = new Dog();
if (myAnimal is Dog)
{
Console.WriteLine("myAnimal is a Dog");
}
else
{
Console.WriteLine("myAnimal is not a Dog");
}
}
}
Dog myDog = myAnimal as Dog: myAnimal์ด ์ค์ ๋ก Dog ํด๋์ค๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋์ง๋ฅผ ํ์ธํ๊ณ , ๊ทธ๋ ๋ค๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ myDog ๋ณ์์ ํ ๋นํจ
//์์ 1
Animal myAnimal = new Animal();
Dog myDog = myAnimal as Dog; // myDog์๋ null์ด ํ ๋น๋จ
//์์ 2
Animal myAnimal = new Dog(); //(๋คํ์ฑ์ ๊ฐ๋
์ ํ์ฉํ ์ฝ๋)
Dog myDog = myAnimal as Dog; // myDog์๋ Dog ๊ฐ์ฒด๊ฐ ํ ๋น๋จ
์ค๋ฒ๋ผ์ด๋ฉ(Override)
ํ์ ํด๋์ค์์ ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ด๋ฆ๊ณผ ๋งค๊ฐ๋ณ์ ํ์ ๊ณผ ๊ฐ์๋ ๊ฐ์ง๋ง ๋ค๋ฅธ ๋์์ ํ๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ค๋ฒ๋ผ์ด๋ฉ์ ์ฌ์ฉํ๋ฉด ๋คํ์ฑ์ ์คํํ ์ ์๋ค. ์์ ํด๋์ค์ virtual์ ๊ผญ ๋ถ์ฌ์ค์ผ ํ๋ค.
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Cat meows");
}
}
class Program
{
static void Main()
{
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.MakeSound(); // "Dog barks" ์ถ๋ ฅ
animal2.MakeSound(); // "Cat meows" ์ถ๋ ฅ
}
}
'๐ฅ๏ธ > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C#] ๊น์๋ณต์ฌ ์์๋ณต์ฌ, readonly, ๊ตฌ์กฐ์ฒด, ํํ (0) | 2023.08.17 |
---|---|
[C#] ๋ถํ ํด๋์ค, ํ์ฅ ๋ฉ์๋ (0) | 2023.08.17 |
[์ด๊ฒ์ด C#์ด๋ค] Chapter06: ์ฐ์ต๋ฌธ์ (0) | 2023.08.16 |
[C#] ์ฐธ์กฐ ๋งค๊ฐ๋ณ์ ์ ๋ฌ, ์ฌ๋ฌ ๊ฐ์ ๊ฐreturn, ๊ฐ๋ณ ๊ฐ์์ ์ธ์, ์ ํ์ ์ธ์ (0) | 2023.08.16 |
[์ด๊ฒ์ด C#์ด๋ค] Chapter05: ์ฐ์ต๋ฌธ์ (0) | 2023.08.16 |