인터페이스 및 추상 클래스

PHP 예제가 포함된 인터페이스 및 추상 클래스에 대한 메모입니다.

인터페이스란 무엇입니까?



아주 기본적인 단어로 연락처 또는 서명입니다. 인터페이스를 구현하는 모든 클래스는 동일한 동작을 가져야 합니다. 즉, 두 개의 매개 변수를 사용하고 문자열을 반환하는 메서드 연락처를 정의하는 경우 이 인터페이스를 구현한 클래스는 동일한 동작을 취해야 합니다.

예를 들어 토론해 보겠습니다.

<?php

interface FlyingCreature
{
    public function fly();
}

interface FeatheredCreature
{
    public function molt();
}

interface SwimmingCreature
{
    public function swim();
}

class Eagle implements FeatheredCreature, FlyingCreature
{
    public function fly()
    {
        // ...
    }

    public function molt()
    {
        // ...
    }
}

class Penguin implements FeatheredCreature, SwimmingCreature
{
    public function molt()
    {
        // ...
    }

    public function swim()
    {
        // ...
    }
}


첫 번째는 ISP(인터페이스 분리 원칙)의 좋은 예이며 다른 기사에서 이 원칙에 대해 논의할 수 있습니다.
  • 예제에서 인터페이스 키워드를 사용하여 인터페이스를 정의하는 것을 볼 수 있습니다.
  • 모든 메서드는 인터페이스에서 공용이어야 합니다
  • .
  • 인터페이스를 구현하려면 implements 키워드를 사용해야 합니다.
  • PHP 및 많은 프로그래밍 언어에서 하나의 클래스만 확장할 수 있습니다. 인터페이스의 경우 둘 이상의 인터페이스를 구현할 수 있습니다.
  • 인터페이스는 extends 키워드를 사용하여 다른 인터페이스를 확장할 수 있습니다.

  • 구체적인 수업이란 무엇입니까?



    구체적인 클래스는 new 키워드를 사용하여 인스턴스를 만들 수 있는 클래스입니다.

    인터페이스를 사용하면 어떤 이점이 있습니까?


  • 공통 클래스 계층 구조를 강제로 공유하지 않고 관련 없는 클래스 그룹에서 구현할 수 있는 동작을 정의하는 기능
  • 클래스는 구현할 수 있는 인터페이스 수에 제한이 없으므로 다양한 역할에 참여할 수 있습니다
  • .
  • 기존 시스템을 수정하여 현재 클래스 계층 내에서 새 기능을 제공할 수 있습니다
  • .
  • 인터페이스를 사용하여 개발할 때 클래스 계층 구조를 단순화할 수 있으므로 일반적으로 오버로드가 줄어듭니다
  • .

    추상 클래스란?



    기본적으로 확장할 다른 클래스에 대한 인터페이스를 정의하지만 몇 가지 차이점이 있습니다.
  • 추상 클래스를 정의하려면 추상 키워드를 추가해야 합니다
  • .
  • 추상 클래스는 일반 클래스처럼 소품과 메서드를 가질 수 있습니다.
  • 추상 클래스를 인스턴스화할 수 없습니다.
  • 클래스에 하나 이상의 추상 메서드가 포함되어 있으면 추상 클래스여야 합니다.
  • 추상 클래스를 확장하는 클래스는 일반 메서드가 아닌 모든 추상 메서드를 구현해야 합니다. 이 부분은 인터페이스와 다릅니다.

  • 다음은 기본적인 사용 예입니다.

    <?php
    
    abstract class Debugger
    {
        abstract public function debug($message);
    }
    
    class BrowserDebugger extends Debugger
    {
        public function debug($message)
        {
            echo "<pre>";
            print_r($message);
            echo "</pre>";
        }
    }
    
    class CLIDebugger extends Debugger
    {
        public function debug($message)
        {
            print_r($message);
        }
    }
    
    $debugger = new CLIDebugger();
    $debugger->debug(array('foo' => 'bar'));
    
    $debugger = new BrowserDebugger();
    $debugger->debug(array('foo' => 'bar'));
    


    추상 클래스와 인터페이스의 차이점
  • 하나의 클래스는 하나의 추상 클래스만 확장할 수 있지만 둘 이상의 인터페이스를 확장할 수 있습니다.
  • 추상 클래스에서는 채워진 메서드를 정의할 수 있지만 인터페이스에서는 불가능합니다.
  • 인터페이스는 다중 상속을 지원하지만 추상 클래스는 이를 지원하지 않습니다.
  • 인터페이스에서는 모든 메소드가 공개되어야 하지만 추상 클래스에서는 필수가 아닙니다.
  • 추상 클래스는 생성자를 가질 수 있지만 인터페이스는 가질 수 없습니다.
  • 인터페이스에서 정적 메서드를 정의할 수 없습니다.

  • 이 문서는 원래 medium에 게시되었습니다.

    좋은 웹페이지 즐겨찾기