PHP에서 클래스 상속과 인터페이스 상속의 차이점은 다음과 같습니다. PHP 클래스는 다중 상속을 지원하지 않습니다. 즉, 하위 클래스는 하나의 상위 클래스만 상속할 수 있지만 다중 레벨 상속을 지원하는 반면, 인터페이스는 다중 상속을 지원합니다. 인터페이스는 하나 이상 상속될 수 있습니다.
이 문서의 운영 환경: Windows 10 시스템, PHP 버전 7.1, Dell G3 컴퓨터.
PHP 클래스 상속:
1. PHP 클래스는 다중 상속을 지원하지 않습니다. 즉, 하위 클래스는 하나의 상위 클래스만 상속할 수 있지만 다중 수준 상속은 지원합니다.
예:
class frist{ public function __construct(){ echo "我是第一个类。","
"; } public function printer(){ echo "frist","
"; } } class seconds extends frist{} class third extends seconds{} $obj = new third(); $obj->printer();
결과: 첫 번째 수업입니다. 첫 번째 클래스와 세 번째 클래스는 프린터() 메서드를 재정의하지 않습니다. 프린터() 메서드는 세 번째 클래스가 인스턴스화된 후에 호출될 수 있습니다.
2. 상속 권한 문제
(1) 부모 클래스의 비공개 메소드는 상속될 수 없으며, 상위 클래스는 비공개됩니다
(2) 상위 클래스의 보호된 메소드는 상속될 수 있지만 호출할 수 없습니다. 인스턴스화된 객체입니다. "Call to protected method frist::printer()" 오류가 발생하면 부모 클래스는 이 메서드를 보호 모드로 설정합니다
(3) 부모 클래스의 공용 메서드는 인스턴스화된 객체에 의해 상속되고 호출될 수 있습니다. 객체이며 공개 메서드입니다
( 4) 하위 클래스는 상위 클래스의 공개 또는 보호 메서드를 재정의할 수 있지만 메서드를 다시 비공개할 수는 없습니다. 이름이 같은 경우 이 클래스에서만 다시 선언할 수 있습니다.
3. 인터페이스 클래스 상속
(1) 인터페이스는 다중 상속을 지원하며 인터페이스 클래스의 메서드는 다음과 같이 구현할 필요가 없습니다.
interface frist{ public function ex1(); } interface seconds{ public function ex2(); } interface third extends frist,seconds{ public function ex3(); } class fourth implements third{ public function ex1(){} public function ex2(){} public function ex3(){} } class fourth implements frist,seconds{ public function ex1(){} public function ex2(){} }
(2) 인터페이스 클래스의 메서드 권한은 공개됩니다. 기본값은 public입니다
(3) 인터페이스를 참조하는 클래스는 인터페이스의 모든 메서드를 구현해야 합니다. 그렇지 않으면 다음과 같은 오류가 보고됩니다. "클래스 e에는 추상 메서드가 1개 포함되어 있으므로 abstract로 선언하거나 구현해야 합니다. 나머지 메서드", 즉 클래스 e에는 1개의 추상 메서드가 포함되어 있으므로 나머지 메서드는 abstract 또는implement로 선언되어야 합니다.
4. 추상 클래스: 클래스의 한 메서드가 추상 메서드인 경우 이 클래스는 추상 클래스로 정의되어야 합니다.
(1) 추상 클래스는 상위 클래스 메서드를 재정의할 수 없습니다.
(2) 추상 클래스 상속은 상위 클래스 메서드의 확장입니다.
(3) 상속된 파생 클래스의 모든 추상 메서드는 인스턴스화되기 전에 오버로드되어야 합니다.
(4) 추상 클래스로 구현된 일반 배포는 추상이 아닌 하위 클래스에서 직접 호출할 수 있습니다.
5. 인터페이스와 추상 클래스의 유사점과 차이점(추상 클래스와 인터페이스의 차이점을 의미)
(1) 인터페이스의 사용은 키워드 구현을 통해 이루어지며, 클래스 상속 사용의 핵심은 추상을 조작하는 것입니다. 클래스
(2) word exotends로 구현 인터페이스에는 데이터 멤버가 없지만 추상 클래스에는 데이터 멤버가 있으며 추상 클래스는 데이터 캡슐화를 구현할 수 있습니다.
(3) 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있을 수 있습니다.
(4) 인터페이스의 메소드는 모두 공개 유형인 반면 추상 클래스의 메소드는 비공개, 보호 또는 공개로 수정될 수 있습니다.
(5) 클래스는 동시에 여러 인터페이스를 구현할 수 있지만 추상 클래스는 하나만 구현할 수 있습니다.
(6) 유사성: function getName();과 같이 함수 본문에 아무것도 쓸 수 없습니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 클래스 상속과 인터페이스 상속의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!