반응형
다중 상속 - 인터페이스(Interface)
"C#은 아래와 같은 이유로 다중 상속을 지원하지 않음"
- 다중 상속은 이점은 거의 없지만 너무 복잡함
- 부모 자식간에 충돌할 가능성이 큼
- 구현에 많은 부담을 주고 실행 속도 저하가 발생함
"따라서, 다중 상속이 아닌 Interface를 이용해 여러 특성을 상속 받음"
[ex]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Interface_Inheritance
{
class Program
{
static void Main(string[] args)
{
child ch = new child();
ch.message1();
ch.message2();
Console.ReadKey();
}
}
// 인터페이스 1
public interface Ibase1
{
// 인터페이스 특성 상 내용을 채울 수는 없음
// 추상 함수처럼 정의만 가능 -> 마찬가지로 자식 클래스에서 반드시 구현 되어야 함
void message1();
}
// 인터페이스 2
public interface Ibase2
{
void message2();
}
// 인터페이스를 이용한 다중 상속
public class child : Ibase1, Ibase2
{
// 인터페이스 1에 의해 반드시 구현되어야 하는 함수
public void message1()
{
Console.WriteLine("Hello Multiple Inheritance 1");
}
// 인터페이스 2에 의해 반드시 구현되어야 하는 함수
public void message2()
{
Console.WriteLine("Hello Multiple Inheritance 2");
}
}
}