다형성 Polymorphism
객체지향 프로그래밍에서 다형성(polymorphism)은 객체가 여러 형태를 가질 수 있음을 의미한다.
다형성은 원래 하위 형식 다형성(subtype olymorphism)의 준말이다. 다시 말해, 자신으로부터 상속받아 만들어진 파생클래스를 통해 다형성을 실천한다는 것이다.
오버라이딩 Overriding
오버라이딩이란 상위 클래스에 선언되어 있는 메소드를 하위 클래스에서 구현내용을 재정의 하여 사용하는 것이다.
메소드를 오버라이딩하기 위해서는 오버라이딩을 할 메소드가 virtual 키워드로 한정되어 있어야 한다.
그리고 오버라이딩을 하는 측(하위 클래스)에서 기반 클래스에 선언 되어 있던 메소드를 재정의 하고 있음을 컴파일러에게 알려야 하므로 override 키워드를 사용해야 한다.
1. 기반 클래스에서 재정의 될 메소드에 virtual 키워드 추가
class ArmorSuite
{
public virtual void Initialize()
{
Console.WriteLine("Armored");
}
}
2. 하위 클래스에 재정의 할 메소드에 override 재정의 키워드 추가
class IronMan : ArmorSuite
{
public override void Initialize()
{
base.Initialize();
Console.WriteLine("RightAttack");
}
}
class Warmachine : ArmorSuite
{
public override void Initialize()
{
base.Initialize();
Console.WriteLine("LeftAttack");
}
}
3. 실행
static void Main(string[] args)
{
ArmorSuite armorSuite = new ArmorSuite();
armorSuite.Initialize();
Console.WriteLine("");
IronMan ironMan = new IronMan();
ironMan.Initialize();
Console.WriteLine("");
Warmachine warmachine = new Warmachine();
warmachine.Initialize();
}
4. 결과
참조: 이것이 C#이다.
'C#' 카테고리의 다른 글
중첩 클래스 / 분할 클래스 (0) | 2022.05.13 |
---|---|
오버로딩과 비슷한 new 키워드?? / 메소드 숨기기 (0) | 2022.05.13 |
기반 클래스와 파생 클래스 사이의 형식 변환, is / as (0) | 2022.05.13 |
상속 (0) | 2022.05.12 |
접근지정자 (0) | 2022.05.12 |