>  기사  >  类库下载  >  PHP의 추상 클래스 및 인터페이스 정의

PHP의 추상 클래스 및 인터페이스 정의

高洛峰
高洛峰원래의
2016-10-09 11:35:291265검색

PHP의 추상 클래스와 인터페이스 정의

최근에 읽은 여러 PHP 참고서에는 추상 클래스가 언급되지 않았기 때문에 인터페이스를 먼저 소개하겠습니다.

저도 인터페이스를 이해하고 나니 추상클래스가 참 이해하기 쉽다는 걸 느꼈습니다.

예제 코드는 아무렇지도 않게 작성했습니다. 예제 코드는 매우 훌륭하며 테스트 후에도 오류가 보고되지 않습니다. 코드를 읽기에 너무 게으른 사람들도 여전히 텍스트를 볼 수 있습니다. 밤이 잘 들어 올려지지 않습니다.

코드 테스트 환경: php5.3.29

인터페이스:

인터페이스는 프레임워크 구축을 용이하게 하기 위해 관례나 사양과 동등한 추상화를 위해 탄생했습니다. 코드 분업.

추상 메서드의 이름, 매개변수, 멤버 상수를 지정하지만 특정 메서드나 변수를 포함할 수는 없습니다.

개인적으로 PHP는 약한 형식의 언어이며 유연성을 강조한다고 생각합니다. Java와 비교할 때 PHP의 인터페이스에는 유형 요구 사항이 너무 느슨합니다. 사용하기가 쉽지 않으며 대량 사용에는 권장되지 않습니다.

 1) 모든 인터페이스는 추상 메소드입니다. (서브클래스 구현에 사용되기 때문에 public 또는 protected여야 합니다.)

2) 인터페이스에는 특정 메소드가 있을 수 없으며, 멤버 상수만 있을 수 있습니다.

 3) PHP와 Java C++ 및 기타 강타입 언어의 차이로 인해 PHP는 약한 타입이며 동적 타입 자체에서는 반환 타입을 지정하지 않으며, 매개변수의 데이터 타입은 다음과 같이 작성할 수 있습니다. 지정할 수 없는 4가지 기본 유형을 작성하므로 메소드 반환 값 및 매개 변수 유형에 대한 요구 사항이 없습니다.

 4) 클래스는 여러 인터페이스를 구현할 수 있습니다. 사용법: Implements 키워드 뒤에 쉼표로 구분된 여러 인터페이스를 구현합니다.

interface Car {
     const name = "车子";
        public function run($speed=400,$time=300);
}

class Xiali implements Car {
    public function run($s=100,$t=200){//参数个数必须相同
              echo '哈哈 我会跑';
              return 'abc';
       }
       
       public function fly() {
               echo '哈哈我会飞';
       }
}

추상 클래스: 함수는 인터페이스와 동일합니다. 둘 다 하위 클래스의 기능을 표준화하지만 인터페이스보다 더 구체적인 내용을 포함합니다.

 1) 하나 이상의 추상 메서드를 포함하는 클래스(즉, 어떤 클래스라도 하나 이상의 추상 메서드를 갖는 한 이 클래스는 추상 클래스여야 합니다.)

 2 ) 인터페이스와 같은 추상 클래스는 인스턴스화할 수 없습니다. 추상이라고 불리는데 왜 인스턴스화합니까? 예제는 모두 구체적입니다. 2333.

 3) 요약: 추상 클래스와 일반 클래스의 차이점: 1. 하나 이상의 추상 메서드를 포함합니다. 2. 인스턴스화할 수 없습니다. 다른 모든 것은 동일합니다.

 4) 사용법 :

abstract class Father{
        abstract function func1();//至少一个抽象方法。
            
        public function func2(){//具体方法随便写。
                echo 'func2';
                $this->func3();
        }   
        private function func3(){
                echo '一个private方法';
        }   
}

상속된 추상 메소드를 구현하는 경우

/**
 * 继承抽象类
 * 必须实现其所有抽象方法
 * 和普通一样,一个类也只能继承一个抽象类
 */
class Son extends Father {
    public function func1() {
         echo '实现(重写)抽象方法。参数名个数必须相同'  
    }
}


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기