상속 받은 클래스의 메소드를 재정의하고 싶을 때 Virtual 키워드를 사용한다.

이는 상속받은 각 클래스에 다른 연산 방식을 정의하고 싶을때 사용한다.

연산자(메소드) 재정의를 위해서는 상속할 클래스 메소드에 Virtual을

그리고 상속 받는 클래스에는 override 키워드를 사용한다.

public class Employee()
{
public virtual void GiveBonus(float amount)
{
currPay += amount;
}
}

public class SalesPerson () : Employee
{
// 재정의한다.
public override void GiveBonus(float amount)
{
currPay += amount * 0.1;
}
}

public class SalesPerson () : Employee
{
// 다음 같이 기존의 메소드를 불러 사용할 수도 있다.
public override void GiveBonus(float amount)
{
base.GiveBonus(amount * 0.1);
}
}

  1. abstract (추상)

이 키워드를 사용하려면 해당 클래스도 반드시 abstract 클래스여야 합니다.

이 키워드로 표시한 속성이나 메서드는 본문을 정의할 수 없으며 반드시 접근 한정자는 public, internal 또는 protected 중에 하나여야 합니다.

  1. virtual (가상)

이 키워드는 정적 클래스(static class)를 제외한 모든 클래스에서 사용이 가능합니다.

이 키워드로 표시한 속성이나 메서드는 본문을 정의할 수 있으며 abstract 와 마찬가지로 접근 한정자는 public, internal 또는 protected 중에 하나여야 합니다.

  1. override (우선시하다 / 치환하다) - 백과사전

이 키워드는 abstract 또는 virtual 키워드로 표시된 속성이나 메서드에만 사용이 가능합니다.

그렇기 때문에 이 키워드는 어떤 클래스를 상속하는 하위 클래스에서만 사용이 가능합니다.

출처: https://slaner.tistory.com/160 [꿈꾸는 프로그래머]

출처: https://soulduo.tistory.com/65 [낭만개발자]