Contents
접기
728x90
1. 기본 개념
다형성은 같은 메서드 호출이지만, 객체에 따라 다르게 동작하게 만드는 객체지향 프로그래밍의 중요한 개념이다.
예를 들어 Speak()이라는 메서드를 동물마다 다르게 구현할 수 있다.
2. 가상(Virtual) 메서드
부모 클래스에서 메서드를 virtual로 선언하면, 자식 클래스에서 이를 override하여 다른 방식으로 재정의할 수 있다.
→ virtual뜻은 자식이 재구현 했을 수 있다. 재정의를 했을 수 있다, 실형태가 다를 수 있으니 실형태에 재정의가 되어있는지 확인해봐라라는 뜻
class Animal {
public virtual void Speak() {
Console.WriteLine("동물이 소리를 냅니다.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("멍멍!");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("야옹~");
}
}
Animal animal = new Dog();
animal.Speak(); // 출력: 멍멍!
→ Animal 타입으로 참조했지만, 실제 객체가 Dog이기 때문에 Dog의 Speak()가 호출됨. 이것이 다형성!
3. 추상(Abstract) 클래스와 메서드
🔹 추상 클래스란?
- abstract 키워드로 선언
- 인스턴스를 만들 수 없고, 상속을 통해서만 사용
- 일부 메서드는 구현하고, 일부는 자식 클래스에서 반드시 구현하도록 강제 가능
🔹 추상 메서드란?
- 구현 없이 선언만 존재
- 자식 클래스에서 반드시 override하여 구현해야 함(강제임)
📝 코드 예시
abstract class Animal {
public abstract void Speak(); // 반드시 자식이 구현해야 함
}
class Bird : Animal {
public override void Speak() {
Console.WriteLine("짹짹!");
}
}
📖정리
✔ 다형성은 동일한 이름의 메서드가 객체에 따라 다르게 동작하는 것
✔ virtual과 override 키워드를 사용하여 구현 가능
✔ abstract 클래스는 공통 기능을 정의하고, 자식이 반드시 필요한 동작을 구현하도록 강제
✔ 다형성을 통해 유지보수가 쉽고, 확장에 유리한 구조 설계 가능
728x90
'C# > 클래스와 구조체' 카테고리의 다른 글
| [C#] 추상클래스 (3) | 2025.05.27 |
|---|---|
| [C#] 오버라이딩 (0) | 2025.04.17 |
| [C#] 상속(Inheritance) (0) | 2025.04.17 |
| [C#] 프로퍼티 (Property) (0) | 2025.04.17 |
| [C#] 객체 (0) | 2025.04.17 |