C#
210525 C#_virtual, override(오버라이드), 객체지향 다향성 구현
S_pot
2021. 5. 25. 15:40
override: 상속관계의 클래스 사이에서 부모클래스의 메소드를 자식클래스가 부모의 메소드를 받아서 다른 형태로 바꾸어 사용
using System;
namespace _210525_010
{
class Instrument
{
public virtual void Play() // virtual: 부모클래스에서 자식클래스의 함수를 사용할 수 있게한다.
{
Console.WriteLine("연주하다.");
}
}
class Piano : Instrument
{
public override void Play()
{
Console.WriteLine("따라란딴딴");
}
}
class Guitar : Instrument
{
public override void Play()
{
Console.WriteLine("띠딩딩띵");
}
}
class Drum : Instrument
{
public override void Play()
{
Console.WriteLine("드럼럼럼럼");
}
}
class Base : Instrument
{
public override void Play()
{
Console.WriteLine("둥둥");
}
}
class Program
{
// 객체지향 다형성 구현: override 기법
// 오버라이딩 메서드를
// 객체기반으로 호출하기
// 1. 부모 클래스의 메소드에 virtual 키워드를 추가한다.
// 2. 자식 클래스의 메소드에 override 키워드를 추가한다.
static void Main(string[] args)
{
Instrument[] Orche;
Orche = new Instrument[5];
Orche[0] = new Instrument();
Orche[1] = new Piano();
Orche[2] = new Guitar();
Orche[3] = new Drum();
Orche[4] = new Base();
foreach(var Temp in Orche)
{
Temp.Play();
}
}
}
}