더북(TheBook)

45.9 인터페이스를 사용하여 멤버 이름 강제로 적용하기

인터페이스를 사용하면 특정 클래스들에 특정 멤버를 강제로 구현하도록 명시할 수 있습니다. 자동차 클래스 관계에서 인터페이스가 바로 표준 설계라고 보면 됩니다. 표준을 무시한 채 설계하다 보면 자동차 기능이 들쑥날쑥하게 정의될 것입니다. 그러나 표준을 미리 정의하고 이를 지키도록(구현하도록) 인터페이스를 설계한 후 인터페이스대로 클래스를 구현하도록 지시하면 공통되고 표준화된 내용을 함께 구현할 수 있습니다. 그러기에 인터페이스를 사용한 상속 기능은 프로그램이 복잡해질수록 그 가치가 높아질 것입니다.

인터페이스를 사용하여 멤버 이름 강제로 적용: InterfaceFriends.cs

using System;

namespace InterfaceFriends
{
    //① 인터페이스: 설계, Run()이라는 단어 설계(명시)
    public interface IStandard { void Run(); }

    //② 추상 클래스: 설계 + 구현
    public abstract class KS
    {
        public abstract void Back();
        public void Left() => Console.WriteLine("좌회전");
    }

    //③ 분할 클래스
    public partial class MyCar : KS
    {
        public override void Back() => Console.WriteLine("후진");
    }
    public partial class MyCar : KS
    {
        public void Right() => Console.WriteLine("우회전");
    }

    //④ 봉인(최종) 클래스
    public sealed class Car : MyCar, IStandard
    {
        public void Run() => Console.WriteLine("전진");
    }

    //⑤ 다음 코드는 에러(봉인 클래스는 상속받을 수 없음)
    //public class SelfCar : Car { }
    
    class InterfaceFriends
    {
        static void Main()
        {
            Car cla = new Car();
            cla.Run(); cla.Left(); cla.Right(); cla.Back();
        }
    }
}

실행 결과

전진
좌회전
우회전
후진

인터페이스, 추상 클래스, 분할 클래스, 봉인 클래스까지 상속에 사용되는 주요 기능들을 적용해 보았습니다.

인터페이스는 프로그램의 표준 규약을 만드는 데 사용됩니다. 이러한 인터페이스는 응용 프로그램을 제작할 때 거의 필수가 되는 개념이기에, 이 강의 내용을 기반으로 앞으로도 계속해서 사용할 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.