happy cat image

everdevel

coding

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.
























everdevel이 만든 무료 클라우드 개발환경을 소개합니다.

방문해 주셔서 감사합니다.

인터페이스

인터페이스는 클래스 사용의 규칙을 정해야 할 때 사용합니다.
여기에서 말하는 규칙이라함은 어떤 클래스에 어떤 메소드를 선언해야하는지 어떤 프로퍼티를 선언해야하는지를 의미합니다.
이 귀찮은걸 왜 해야 하는지 궁금하실 텐데요.
개인 프로젝트로 혼자서만 어떠한것을 할 때는 크게 상관없습니다.
하지만 보통 회사에서는 하나의 프로젝트를 여러명이서 작업을 하게 됩니다.
이 사람 저 사람이 계획없이 만지다보면 관리가 어렵습니다.
지금은 시대가 좋아져서 코드 형상관리 프로그램이라던지 있지만
예전에는 누가 잘못하면 거짓말하기 딱 좋은 시대가 되었죠.

아무튼 이런 저런 이유로 관리의 이슈때문에 클래스의 사용 규약을 필요로 하는 시점이 온거죠. 사실 저는 실무하면서 한번도 사용해 본적이 없습니다.

interface 사용 방법

interface 인터페이스명
{
}

예를들어 인터페이스 이름이 howto이고 클래스에서 run(), stop(), turn() 메소드를 필수로 생성해야 한다면 다음과 같이 작성해요.

<?php

    interface howto
    {
        public function run();

        public function stop();

        public function turn();

    }
?>

클래스에 인터페이스를 적용하려면 implements 키워드를 사용합니다.

implements 사용 방법

class 클래스명 implements 인터페이스명
{
}

그럼 한번 해볼까요?

<?php

    interface howto
    {
        public function run();

        public function stop();

        public function turn();

    }

    class Car implements howto
    {
        public function run()
        {
            return '달립니다.';
        }

        public function stop()
        {
            return '멈춥니다.';
        }

        public function turn()
        {
            return '회전합니다.';
        }
    }

    $hello = new Car;
    echo $hello->run();
?>

결과는 바로 아래에서 확인하겠습니다.

위 코드의 결과

이렇게 보니까 인터페이스를 왜 쓰는지 잘 모르시겠죠?
그럼 인터페이스에서 선언한 메소드인데 클래스에서 사용하지 않아 볼까요?
아래는 클래스에서 turn()메소드를 사용하지 않아볼게요.

<?php

    interface howto
    {
        public function run();

        public function stop();

        public function turn();

    }

    class Car implements howto
    {
        public function run()
        {
            return '달립니다.';
        }

        public function stop()
        {
            return '멈춥니다.';
        }
    }
    $hello = new Car;
?>

결과는 바로 아래에서 확인하겠습니다.

위 코드의 결과

인터페이스에서는 turn()메소드를 필수로 사용하라고 했는데, 클래스에서는 turn() 메소드를 선언하지 않아 오류가 발생합니다.
반대로 인터페이스에 선언되지 않은 메소드를 클래스에서 사용하는것은 문제없습니다.
매번 기능을 업데이트할텐데 그때마다 인터페이스에 넣어야 한다면 관리하기 어렵겠죠.
다행히 필수적인 메소드를 지정하게끔 설계되어있습니다.
인터페이스에 명시되지 않은 메소드를 클래스에 넣어서 정상작동하는지 확인해 볼게요.

<?php

    interface howto
    {
        public function run();

        public function stop();

        public function turn();

    }

    class Car implements howto
    {
        public function run()
        {
            return '달립니다.';
        }

        public function stop()
        {
            return '멈춥니다.';
        }

        public function turn()
        {
            return '회전합니다.';
        }

        public function auto()
        {
            return '자동으로 운전합니다.';
        }
    }

    $hello = new Car;
    echo $hello->turn();
?>

결과는 바로 아래에서 확인하겠습니다.

위 코드의 결과

여러명이서 하나의 프로젝트를 진행할 때 어떠한 규칙이 발생했을 때 인터페이스를 사옹하면 사전에 오류를 방지해서 사용하기 좋을 것 같네요. ^-^*
인터페이스도 상속할 수 있습니다. 다음 시간에는 인터페이스 상속에 대해서 알아볼게요.


봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.

컨텐츠의 내용을 더 보려면 바로 아래에서 확인할 수 있습니다.


    
    

강좌로 돌아가기

댓글 0개

정렬기준