본문 바로가기
Study/C#

[C#][Study][기초다지기] 다중 상속 - 인터페이스 interface

by 스테디코디스트 2023. 9. 23.
반응형

다중 상속 - 인터페이스(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");
        }
    }
}