>  기사  >  백엔드 개발  >  PHP에서 클래스 상속과 인터페이스 구현의 차이점은 무엇입니까

PHP에서 클래스 상속과 인터페이스 구현의 차이점은 무엇입니까

WBOY
WBOY원래의
2022-02-17 11:43:181679검색

PHP에서 상속된 클래스와 구현된 인터페이스의 차이점: 1. PHP 상속은 단일 상속에 속하므로 통일성을 보장하지만 충분히 유연하지 않습니다. 반면 인터페이스 구현은 단일 상속을 보완합니다. 2. 인터페이스 구현은 없이도 달성할 수 있습니다. 계층적 관계 파괴를 전제로 특정 클래스의 기능을 확장한다.

PHP에서 클래스 상속과 인터페이스 구현의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: Windows 10 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php에서 상속된 클래스와 구현된 인터페이스의 차이점

1. 상속과 구현된 인터페이스의 비교:

( 1) PHP 상속은 단일 상속으로 단일성을 보장하지만 유연성이 부족합니다. 인터페이스 구현은 단일 상속을 보완하는 것입니다.

(2) 인터페이스 구현은 클래스 계층 관계를 파괴하지 않고 특정 클래스의 기능을 확장할 수 있습니다.

<?php
  class Monkey {
      public $age;
      public $name;
      public function climbing() {
          echo "猴子会爬树<br/>";
      }
  }
  interface iBirdable {
      public function fly();
  }
  interface iFishable {
      public function swimming();
  }
  class LittleMonkey extends Monkey implements iBirdable,iFishable {
      public function fly() {
          echo "猴子还会飞<br/>";
      }
      public function swimming() {
          echo "猴子也会游泳<br/>";
      }
  }
  $littleMonkey = new LittleMonkey();
  $littleMonkey -> climbing();
  $littleMonkey -> fly();
  $littleMonkey -> swimming();
?>

2. 최종 키워드:

1. 보안 측면에서 클래스를 다른 클래스에 상속하지 않으려면 final을 사용하여 수정할 수 있습니다.

2. 하위 클래스에 의해 재정의되거나(이 메서드가 하위 클래스 메서드에 의해 오버로드되기를 바라지 않음) final로 수정할 수 있습니다.

<?php  
class A{  
    final public function getRate($salary){  
        return $salary*0.08;  
    }  
}  
class B extends A{  
    //不能去覆盖父类的getRate方法.  
    /*public function getRate($sal){ 
        return $sal*0.01; 
    }*/  
}  
        
$b=new B();  
echo $b->getRate(100)."<br/>";  
?>

3. Final은 멤버 변수(속성)를 수정할 수 없습니다.

3. const:

1. 속성을 수정하고 싶지 않은 경우 const를 사용하여 이를 상수로 만드는 것을 고려할 수 있습니다.

2. 기본 구문:

const 상수 이름 = 초기 값 지정;

초기 값을 지정하지 않으면 나중에 변조할 수 없으며 값이 없습니다.

3. 수정자는 상수에 쓸 수 없습니다. 기본적으로 공개되지만 쓸 수는 없습니다.

4. 상수 이름은 일반적으로 모두 대문자로 지정됩니다.

5. 호출 구문:

클래스 내부에서 사용:

self:: 상수 이름 또는 클래스 이름::상수 이름

클래스 외부에서 사용:

인터페이스 이름::constant;

PHP 비디오 튜토리얼

"

위 내용은 PHP에서 클래스 상속과 인터페이스 구현의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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