태그: 추상 클래스 인터페이스 추상 클래스와 인터페이스 php
소개: 이것은 인터뷰에서 자주 묻는 질문이자 고전적인 질문이기도 합니다. 우리는 이 기사에 언급된 내용의 정확성을 입증하기 위해 공식적으로 권위 있는 지침을 인용하거나 실험을 수행하기 위해 최선을 다합니다.
공식 설명은 문서를 확인하세요. 다음은 공식 설명을 단순화한 것입니다.
추상으로 정의된 클래스는 인스턴스화할 수 없습니다. 적어도 하나의 메소드가 추상으로 선언된 경우 모든 클래스는 추상으로 선언되어야 합니다. (추상 클래스에는 추상 메소드가 없을 수 있지만 추상 클래스는 여전히 인스턴스화될 수 없습니다.) 추상으로 정의된 메소드는 호출 메소드(매개변수)만 선언하고 특정 함수 구현을 정의할 수 없습니다. 예를 들어,
abstract class AbstractClass { // 强制要求子类定义这些方法,且不能定义具体功能 注意没有大括号{} abstract protected function getValue (); abstract protected function prefixValue ( $prefix ); // 普通方法(非抽象方法) public function printOut () { print $this -> getValue () . "\n" ; } }
b=1, 여기서 $b는 선택적 매개변수
와 유사))를 정의하지만 상위 클래스의 추상 메소드 두 명령문 사이에는 충돌이 없습니다. 이는 PHP 5.4 이후의 생성자에도 적용됩니다. PHP 5.4 이전의 생성자 선언은 다를 수 있습니다.abstract class Sutdent extends Human{ abstract private function study();}
추상 상위 클래스의 추상 메서드를 재정의합니다. 이러한 사용법은 추상 클래스의 확장으로 이해될 수 있습니다. 예를 들어
abstract class Human{ abstract function eat();}abstract class Sutdent extends Human{ abstract function study(); //abstract function eat(); 若重写抽象父类的抽象方法eat()会报错}
Interface
).
interface Play { const LEVEL=10; public function PlayLOL(); public function PlayFootball(); }
인터페이스를 구현하려면 다음을 사용하세요. 도구 운영자. 비추상 클래스는 인터페이스에 정의된 모든 메서드를 구현해야 합니다. 그렇지 않으면 치명적인 오류가 보고됩니다. 클래스는 여러 인터페이스를 구현할 수 있습니다. 쉼표를 사용하여 여러 인터페이스의 이름을 구분하세요.
추가됨:
추상 클래스를 상속하고 인터페이스를 구현할 수 있습니다.
추상 클래스는 인터페이스를 구현하므로 메서드를 다시 작성할 필요가 없습니다.
여러 인터페이스를 구현할 때 인터페이스의 메서드는 동일한 이름을 가질 수 없습니다.
- extends 연산자를 사용하여 인터페이스를 상속할 수도 있습니다.
- 인터페이스를 구현하려면 클래스는 인터페이스에 정의된 메서드를 정확히 동일한 방식으로 사용해야 합니다. 그렇지 않으면 치명적인 오류가 발생합니다.
interface Play { const LEVEL=10; public function PlayLOL(); public function PlayFootball(); } interface Read { public function ReadNovel(); } abstract class Human{ abstract function eat();}//抽象类可以实现接口后不实现其方法,可以继承一个抽象类的同时实现多个接口注意必须要把extends语句写在implements前面,否则会报错abstract class Sutdent extends Human implements Play,Read{ abstract function study();}인터페이스 상속
치명적인 오류: PlayGame은 Human을 구현할 수 없습니다. 10행의 D:11index.php에 있는 인터페이스가 아닙니다)interface Play {
public function PlayFootball(); }interface Play1 {
public function PlayFootball(); }interface PlayGame extends play,Play1{
public function PlayLOL(); }
Summary
간단히 요약하자면, 추상 클래스는 일반적으로 엔터티 유형을 정의하는 데 사용됩니다무엇입니까 여기에는 속성, 추상 메서드 및 비추상 메서드가 포함됩니다. 인터페이스는 엔터티 유형이 수행할 수 있는 작업을 정의하는 데 사용됩니다. 일반적으로 인터페이스에는 추상 메서드만 있고 상수는 거의 사용되지 않는 것으로 알려져 있습니다. 관련 추천:
PHP 추상 클래스와 인터페이스의 차이점위 내용은 PHP의 추상 클래스와 인터페이스의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!