제로의영역

8.4 여러 개의 인터페이스, 한꺼번에 상속하기 본문

C#

8.4 여러 개의 인터페이스, 한꺼번에 상속하기

아이큐제로 2019. 6. 26. 16:00

* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.

* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.

 

1. 정의: 여러개의 인터페이스를 다중 상속하는 클래스 만들기

 

2. 용도: 여러 개의 인터페이스에 있는 메소드를 모호성 없이 상속받아야 할 때 사용. >> 상속한 메소드를 클래스 안에서 정확히 구현하여 쓸 수 있도록 함.

 

3. 사용법: 상속할 인터페이스 이름을 ','로 구분하여 정렬 

     class 클래스 이름: 상속 인터페이스 1, 상속 인터페이스 2, ...

 

예제

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ex8._3
{
    interface IRunable                          //인터페이스1
    {
        void Run();                             //public으로 선언된 메소드
    }

    interface IFlyable                          //인터페이스2
    {
        void Fly();                             //public으로 선언된 메소드
    }
    class FlyingCar:IRunable, IFlyable          //다중상속 클래스(상속한 인터페이스의 메소드를 모두 구현해야함)
    {
        public void Run()                       //인터페이스1의 메소드 구현
        {
            Console.WriteLine("Run! Run!");
        }
        public void Fly()                       //인터페이스2의 메소드 구현
        {
            Console.WriteLine("Fly! Fly!");
        }
    }
    class MainProgram
    {
        static void Main(string[] args)
        {
            FlyingCar car= new FlyingCar();         //FlyingCar클래스의 객체 생성
            car.Run();                              //FlyinCar클래스의 Run()메소드 호출
            car.Fly();                              //FlyinCar클래스의 Fly()메소드 호출

            IRunable runnable = car as IRunable;    //car는 FlyingCar()의 형식, FlyingCar()는 IRunable을 상속하므로 runnable은 형변환 성공
            runnable.Run();                         //인터페이스1의 Run()메소드 호출

            IFlyable flyable = car as IFlyable;     //car는 FlyingCar()의 형식, FlyingCar()는 IFlyable을 상속하므로 runnable로 형변환 성공
            flyable.Fly();                          //인퍼에시스2의 Fly()메소드 호출
        }
    }
}

출력 결과

Run! Run!
Fly! Fly!
Run! Run!
Fly! Fly!

'C#' 카테고리의 다른 글

8장 인터페이스 연습문제  (0) 2019.06.26
8.5 추상 클래스  (0) 2019.06.26
8.3 인터페이스를 상속하는 인터페이스  (0) 2019.06.25
8.2 인터페이스는 약속이다  (0) 2019.06.25
7.17 튜플  (0) 2019.06.18