가상함수?
- 가상함수는 기본 클래스에서 파생된 클래스에 재정의(Override)될 수 있는 함수이다.
- 가상함수를 통해 다형성을 구현할 수 있다.
C#에서는 'virtual' 키워드를 사용하여 선언된다.기본 클래스에서 가상함수를 선언하면 파생 클래스에서 이를 재정의 할 수 있다.
class Shape
{
public virtual void Draw()//가상함수 선언
{
Console.WriteLine("도형을 그립니다.");
}
}
class Circle : Shape
{
public override void Draw()//override로 재정의
{
Console.WriteLine("원을 그립니다.");
}
}
'override'는 자식 클래스 앞에 선언된다.부모로부터 상속받은 함수와는 다르게 구현한다는 의미를 가지고있다.
재정의되는 함수는 부모의 함수와 이름이 일치해야 한다.
class Skill
{
public virtual void Excute()//가상함수
{
Console.WriteLine("스킬 재사용 대기시간");
}
}
class FireBall : Skill
{
public override void Excute()//오버라이딩
{
base.Excute();
Console.WriteLine("화염구 발사");
}
}
class Dash : Skill
{
public override void Excute()//오버라이딩
{
Console.WriteLine("돌진공격");
}
}
static void Test()
{
Skill fireball = new FireBall();
fireball.Excute();//fireball에 있는 Excute()
Skill dash = new Dash();
dash.Excute();//dash에 있는 Excute()
}
class Player
{
Skill skill;
public void SetSkill(Skill skill)
{
this.skill= skill;
}
public void UseSkill()
{
skill.Excute();
}
}
static void Main(string[] args)
{
Player player = new Player();
Skill fire = new FireBall();
player.SetSkill(fire);
player.UseSkill();
}
}
스킬 재사용 대기시간
화염구 발사
'C#은 처음이라' 카테고리의 다른 글
C# 일반화(Generic) (1) | 2024.03.08 |
---|---|
C# 문자열(string) (0) | 2024.03.07 |
C# 추상화(Abstract) (0) | 2024.03.06 |
C# 배열 활용 (0) | 2024.03.06 |
C# 캡슐화 (0) | 2024.03.06 |