>백엔드 개발 >PHP 튜토리얼 >PHP의 클래스 상속과 인터페이스 상속 비교 소개

PHP의 클래스 상속과 인터페이스 상속 비교 소개

不言
不言앞으로
2018-10-10 17:02:183233검색

이 글은 PHP의 클래스 상속과 인터페이스 상속에 대한 비교 소개를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

PHP 클래스 상속:

1. PHP 클래스는 다중 상속을 지원하지 않습니다. 즉, 하위 클래스는 하나의 상위 클래스만 상속할 수 있지만 다음과 같은 다중 수준 상속을 지원합니다.

class frist{
    public function __construct(){
        echo "我是第一个类。","<br>";
    }
    public function printer(){
        echo "frist","<br>";
    }
}
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) 인터페이스 클래스의 메서드 권한 모두 공개이고 기본값은 공개입니다.

(3) 인터페이스를 참조하는 클래스는 인터페이스의 모든 메소드를 구현해야 합니다. 그렇지 않으면 다음과 같은 오류가 보고됩니다. " 클래스 e에는 1개의 추상 메소드가 포함되어 있으므로 반드시 추상으로 선언하거나 나머지 메서드를 구현합니다." 즉, 클래스 e에는 추상 메서드 1개가 포함되어 있으므로 나머지 메서드는 추상으로 선언하거나 구현해야 합니다.

4. 추상 클래스: 클래스의 한 메서드가 추상 메서드인 경우 이 클래스는 추상 클래스로 정의되어야 합니다.

(1) 추상 클래스는 상위 클래스 메서드를 재정의할 수 없습니다.

(2) 추상 클래스 상속은 상위 클래스 메서드의 확장입니다.

(3) 상속된 파생 클래스의 모든 추상 메서드는 인스턴스화되기 전에 오버로드되어야 합니다.

(4) 추상 클래스로 구현된 일반 배포는 추상이 아닌 하위 클래스에서 직접 호출할 수 있습니다.

5. 인터페이스와 추상 클래스의 유사점과 차이점(추상 클래스와 인터페이스의 차이점을 의미)

(1) 인터페이스의 사용은 키워드 구현을 통해 이루어지며, 클래스 상속 사용의 핵심은 추상을 조작하는 것입니다. 클래스 단어 엑소텐드로 구현됨

(2) 인터페이스에는 데이터 멤버가 없지만 추상 클래스에는 데이터 멤버가 있으며 추상 클래스는 데이터 캡슐화를 구현할 수 있습니다.

(3) 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있을 수 있습니다.

(4) 인터페이스의 메소드는 모두 공개 유형인 반면 추상 클래스의 메소드는 비공개, 보호 또는 공개로 수정될 수 있습니다.

(5) 클래스는 동시에 여러 인터페이스를 구현할 수 있지만 추상 클래스는 하나만 구현할 수 있습니다.

(6) 유사성: function getName();과 같이 함수 본문에 아무것도 쓸 수 없습니다.

위 내용은 PHP의 클래스 상속과 인터페이스 상속 비교 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제