ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024.03.06 - 인터페이스(interface)
    C# 2024. 3. 8. 14:13
    • 인터페이스의 구현

    인터페이스가 뭔지 알아보기 전에 어떻게 생겼는지 알아보자.

     

    • 인터페이스(Interface)의 선언
    interface 인터페이스_이름
    {
            반환_형식 메소드_이름1(매개변수_목록);
            반환_형식 메소드_이름2(매개변수_목록);
            반환_형식 메소드_이름3(매개변수_목록);
            //...
    }

     

    인터페이스를 선언하는 것은 클래스와 많이 닮아있다.

     

     

    • 인터페이스의 특징

    - 인터페이스는 메소드, 이벤트, 인덱서, 프로퍼티 만을 가질 수 있다. (변수 같은 거를 못가진다)

     

    - 인터페이스는 접근제한자를 사용할 수 없고, 모든 것이 public으로 선언된다.

     

    - 인터페이스의 멤버는 구현부가 없다. (추상 클래스의 추상 메서드와 비슷하다)

     

    - 인터페이스는 인스턴스를 만들 수 없다.

     

     

    • 인터페이스 사용법

    인터페이스는 클래스에 상속하여 사용한다. 써보자.

     

    인터페이스를 상속받은 클래스는 인터페이스의 멤버를 구현해주어야한다.

    이 점은 마치 추상 클래스와 추상 클래스를 상속받은 자식 클래스를 떠올리게 한다.

     

    추상 클래스도 상속받는 클래스에서 추상 메소드를 구현해 주어야 한다

     

     

    그럼 일단 인터페이스를 상속받은 클래스에서 멤버를 구현해보자

     

    인터페이스의 멤버를 구현할 때는 public으로 선언해주지 않으면 안된다.

     

     

    정상적으로 인터페이스를 상속받은 클래스

     

    인터페이스를 상속받은 클래스는 인터페이스 객체로 취급할 수 있다.(업캐스팅이 된다)

     

     

    • 그래서 인터페이스는 뭐하는데 쓰나요

     인터페이스는 추상 클래스와 비슷한 역할을 한다. 상속할 클래스가 무엇을 구현해야 할지를 정의하는 역할을 한다.

     

     

    • 그러면 추상 클래스랑 인터페이스는 무슨 차이가 있나요

    자식 클래스가 부모클래스의 하위분류인 경우, 상속을 통해 자식클래스의 기능을 확장하는 경우에는 추상 클래스를 사용한다. 자식 클래스가 상속받은 어떤 행위를 할 수 있는 경우에는 인터페이스를 사용한다. 

    쉽게 말해서 상속받는 클래스가 '~이다' 관계이면 추상클래스를, 상속받는 클래스가 '~한다, ~있다 관계이면 인터페이스를 사용한다. 

     

    추상클래스를 활용한 Scroll 클래스와 인터페이스를 활용한 Potion 클래스

     

     추상 클래스 Item은 effect()라는 메소드를 가졌지만 effect()가 어떻게 작동할 아이템인지 모르기 때문에 추상 메서드로 남겨놓았다. 클래스 Scroll은 Item을 상속받아 effect()를 구체화해준다. (Scroll은 Item'이다.')

     

     인터페이스 IEatable은 Eat()할 수 있는 속성을 나타낸다. Eat()이 어떻게 작동할지 모르기 때문에(쩝쩝 먹을지, 으적으적 먹을지, ..) 구현하지 않았다. 클래스 Potion은 Eat()할 수 있는 IEatable 속성을 가진다.  Potion은 IEatable을 상속받아 Eat()을 구체화해준다.(Potion은 먹을수'있다.' (Potion을 먹'는다.'))

     

    위의 예시에서 Potion이 Item과 IEatable을 동시에 상속하고 있는것을 볼 수 있다.

    클래스는 동시에 여러개를 상속할 수 없지만, 인터페이스는 동시에 여러개를 상속할 수 있다는 특징이 있다.

     

    IEatable과 IThrowable을 동시에 상속한 Potion 클래스

     

Designed by Tistory.