>백엔드 개발 >PHP 문제 >PHP는 단일 상속인가요, 아니면 다중 상속인가요?

PHP는 단일 상속인가요, 아니면 다중 상속인가요?

王林
王林원래의
2019-09-19 17:56:433274검색

PHP는 단일 상속인가요, 아니면 다중 상속인가요?

PHP는 다중 상속을 지원하지 않는데 다중 상속을 어떻게 구현하나요?

인터페이스 또는 특성을 사용하여 구현 가능

인터페이스 여기서는 너무 많이 설명하지 않겠습니다. 원칙은 하나의 클래스가 여러 인터페이스를 구현할 수 있다는 것입니다. 다음 코드는 이를 설명할 수 있습니다.

interface test1{
    public function connect();
}

interface test2{
    public function contact();
}

// 类可以同时实现多个接口
class myCode implements test1,test2{
    public function connect(){
    echo "test1!";
    }
    public function contact(){
    echo "test2!":
    }
}

이제 특성이 다중 상속을 구현하는 방법에 집중해 보겠습니다(실제로는 다중 상속이라고 부르지 않고 다중 상속과 비슷한 함수라고 불러야 합니다)
특성이란 무엇인가요?
답변: 클래스와 둘 다처럼 보입니다. 인터페이스이지만 실제로는 Trait은 하나 이상의 기존 PHP 클래스와 혼합될 수 있는 클래스의 부분 구현으로 간주될 수 있습니다. 클래스가 수행할 수 있는 작업을 표시하고 모듈식 구현을 제공하는 것입니다. Trait은 PHP의 단일 상속 제한에 대해 유연한 코드 재사용 메커니즘을 제공하는 코드 재사용 기술입니다.
그럼 특성을 어떻게 구현하나요? 아래 코드를 보세요:

//基本类
  class basicTest{
    public function test(){
      echo "hello,world\n";
    }
  }
  //traitOne
  trait traitOne{
    public function test(){
      echo "this is trait one";
    }
    public function testOne(){
      echo "one<br />";
    }
  }
  //traitTwo
  trait traitTwo{
    // public function test(){
      // echo "this is trait two!";
    // }
    public function testTwo(){
      echo "Two<br />";
    }
   }
  //继承基本类,并use trait
  class myCode extends basicTest{
    use traitOne,traitTwo;
    public function test(){
      echo "hehaha!!<br />";
    }
  }

  $obj = new myCode();
  $obj->testTwo();

참고:

우선순위: 자체 메서드 > 특성 메서드 > 상속된 메서드 (이런 모습입니다.)
위 코드에서 주석을 열면 오류가 보고됩니다. , 각 특성의 두 메서드 이름이 동일하기 때문입니다.

추천 튜토리얼: PHP 비디오 튜토리얼

위 내용은 PHP는 단일 상속인가요, 아니면 다중 상속인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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