하자 Haja

4. 인터페이스 (꼭 지켜야 할 약속)

규격에 딱 맞는 클래스만 만들어지도록 강제로 약속을 맺어봐요.

내용은 안 채우고 “이 클래스는 반드시 이런 기능이 있어야 해!“라고 껍데기만 약속하고 싶을 때는 규정하자를 씁니다. 그리고 클래스를 만들 때 따르는 키워드를 써주면, 이 약속을 무조건 지켜야만 실행돼요!

[날수있는것]을 규정하자:
    <날기>가 있어야 한다 ()

[소리내는것]을 규정하자:
    <소리내기>가 있어야 한다 ()

(참고) 두 가지 약속을 모두 지키는 새를 만들어볼까요?
[날수있는것]과 [소리내는것]을 따르는 [새]를 설계하자:
    <날기>를 만들자 ():
        "파닥파닥 하늘을 납니다!"를 출력하자
        
    <소리내기>를 만들자 ():
        "짹짹!"을 출력하자

'참새'를 [새]인 [새]()로 정하자
'참새'의 <소리내기>()를 실행하자
'참새'의 <날기>()를 실행하자

만약 인터페이스에 적힌 기능을 하나라도 빼먹으면, 프로그램이 시작하기도 전에 에러를 뱉으며 깐깐하게 막아선답니다! 여러 개의 인터페이스를 동시에 과/와 로 묶어서 따를 수도 있어요.


약속을 어기면 어떻게 될까요?

인터페이스를 따르겠다고 해놓고 기능을 빼먹으면 어떻게 되는지 직접 에러를 확인해 볼까요?

[움직이는것]을 규정하자:
    <달리기>가 있어야 한다 ()
    <멈추기>가 있어야 한다 ()

(참고) 달리기만 만들고 멈추기를 깜빡했어요!
[움직이는것]을 따르는 [고장난로봇]을 설계하자:
    <달리기>를 만들자 ():
        "로봇이 달려갑니다!"를 출력하자

'로봇'을 [고장난로봇]인 [고장난로봇]()로 정하자

이 코드를 실행해 보면 “InterfaceImplementationError: 클래스 ’고장난로봇’은 인터페이스 ’움직이는것’의 ‘멈추기’ 메서드를 구현해야 합니다.” 라는 에러가 뜹니다. 이렇게 인터페이스를 활용하면 실수로 필수 기능을 빼먹는 일을 완벽하게 방지할 수 있어요!

놀이터 (Playground)

터미널
코드를 작성하고 '실행' 버튼을 눌러보세요.