>백엔드 개발 >PHP 튜토리얼 >PHP의 인터페이스 및 구현에 대한 자세한 소개

PHP의 인터페이스 및 구현에 대한 자세한 소개

零下一度
零下一度원래의
2017-06-17 10:50:001426검색

PHP 클래스는 단일 상속입니다. 즉, 클래스가 여러 클래스의 기능을 요구하는 경우 상속은 무력합니다. 이러한 이유로 PHP는 클래스 인터페이스 기술을 도입합니다. 다음 글은 주로 PHP의 키워드 인터페이스와 구현에 대한 관련 정보를 소개합니다. 필요한 친구들이 참고할 수 있습니다.

PHP 인터페이스

PHP 클래스는 단일 상속입니다. 즉, 클래스가 여러 클래스의 기능을 요구하는 경우 상속은 무력합니다. 이러한 이유로 PHP는 클래스 인터페이스 기술을 도입합니다. .

추상 클래스의 모든 메서드가 추상 메서드이고 변수가 선언되지 않고 인터페이스의 모든 멤버가 공용 권한을 갖는 경우 이 특수 추상 클래스를 인터페이스라고 합니다.

인터페이스는 인터페이스 키워드를 사용하여 정의되며, 키워드 Implements는 완전히 구현되어야 하는 인터페이스의 메서드를 구현하는 데 사용됩니다.

클래스에 인터페이스 적용

1. 키워드: 인터페이스

2. 키워드: 구현

1. 인터페이스 소개 및 생성

인터페이스: 멤버 속성모두 특별한 추상입니다. 추상적이거나 상수인 클래스.

규칙:

1. 클래스의 모든 메소드는 추상입니다.

2. 추상 메서드에는 추상을 추가할 필요가 없습니다.

3. 인터페이스의 추상 메소드 속성은 공개입니다.

4. 멤버 속성은 상수여야 합니다.

형식 코드는 다음과 같습니다.


interface demo { 
const NAME = "常量对象属性"; 
function fun1(); 
function fun2(); //抽象方法。 
}

2. 인터페이스의 적용 및 사양

인터페이스 참조는 클래스 상속 키워드extends와 다릅니다. 반면 인터페이스는 키워드를 사용할 수 있습니다. 쉼표로 구분된 여러 참조를 구현합니다

1. 형식: 일반 클래스 참조 인터페이스


class MyPc implements demo , demo2 , demo3 { 
... 
}

2. 형식: 추상 클래스 응용 프로그램 인터페이스 예시


abstract class MyPc implements demo , demo2 , demo3 { 
... 
}

3 형식: 상위 클래스 참조 인터페이스 상속 및 공존


class MyPc extends Root implements demo , demo2 , demo3 { 
... 
}

먼저 상속한 다음 인터페이스, 단일 상속 다중 인터페이스.

4. 형식: 인터페이스 및 인터페이스 상속


interface demo3 extends demo { 
... 
}

예제 코드는 다음과 같습니다.


<?php 
interface demo { 
 const NAME = "名称"; 
 function fun1(); 
 function fun2(); 
} 
interface demo2 { 
 function fun3(); 
 function fun4(); 
} 
interface demo3 { 
 const TEST = "Test"; 
 function fun5(); 
} 
class MyPc implements demo, demo2 { 
 function fun1() { 
 echo "++++++++++<br />"; 
 } 
 function fun2() { 
 echo "----------<br />"; 
 } 
 function fun3() { 
 echo "1111111111<br />"; 
 } 
 function fun4() { 
 echo "2222222222<br />"; 
 } 
} 
class MyPs extends MyPc implements demo3 { 
 function fun5() { 
 echo "继承类后引用接口"; 
 } 
} 
$p = new MyPs; 
$p->fun1(); 
$p->fun2(); 
$p->fun3(); 
$p->fun4(); 
$p->fun5(); 
?>

예를 들어 인터페이스는 인터페이스 키워드를 사용하여 정의되고 Implements 키워드는 구현에 사용됩니다. 인터페이스의 메서드를 완전히 구현해야 합니다.

예제 코드는 다음과 같습니다.


<?php 
//定义接口 
interface User{ 
 function getDiscount(); 
 function getUserType(); 
} 
//VIP用户 接口实现 
class VipUser implements User{ 
 // VIP 用户折扣系数 
 private $discount = 0.8; 
 function getDiscount() { 
  return $this->discount; 
 } 
 function getUserType() { 
  return "VIP用户"; 
 } 
} 
class Goods{ 
 var $price = 100; 
 var $vc; 
 //定义 User 接口类型参数,这时并不知道是什么用户 
 function run(User $vc){ 
  $this->vc = $vc; 
  $discount = $this->vc->getDiscount(); 
 $usertype = $this->vc->getUserType(); 
  echo $usertype."商品价格:".$this->price*$discount; 
 } 
} 
$display = new Goods(); 
$display ->run(new VipUser); //可以是更多其他用户类型 
?>

예제를 실행하면 출력은 다음과 같습니다.

VIP 사용자 제품 가격: 80위안

이 예는 PHP 인터페이스의 간단한 적용을 보여줍니다. 이 예에서 User 인터페이스는 사용자 할인을 구현하고 VipUser 클래스는 특정 할인 계수를 구현합니다. 마지막으로 상품 카테고리 상품은 사용자 인터페이스를 기반으로 다양한 사용자 견적을 구현합니다.

이 예는 PHP 인터페이스의 사용법을 보여주는 것으로 제한되며 과학적 성격을 포함하지 않습니다.

다중 인터페이스 구현

PHP는 클래스를 상속할 때 동시에 여러 인터페이스를 구현할 수도 있습니다.


class 子类 extends 父类 implemtns 接口1, 接口2, ... 
{ 
 ...... 
}

추상 클래스와 인터페이스의 차이점

인터페이스는 특별한 추상 클래스입니다. 모델의 사양으로도 볼 수 있습니다. 인터페이스와 추상 클래스의 일반적인 차이점은 다음과 같습니다.

1. 하위 클래스가 인터페이스를 구현하는 경우(필요 여부에 관계없이) 인터페이스의 모든 메서드를 구현해야 합니다. 필요한 메소드를 구현합니다.

2. 인터페이스에 정의된 메서드 이름이 변경되면 이 인터페이스를 구현하는 모든 하위 클래스는 메서드 이름을 동기적으로 업데이트해야 하며, 추상 클래스의 메서드 이름이 변경되면 해당 하위 클래스의 메서드 이름은 업데이트되지 않습니다. 영향을 받습니다. (이전 메서드 구현과 관련하여) 새로운 메서드가 됩니다.

3. 추상 클래스는 단독으로만 상속될 수 있습니다. 하위 클래스가 여러 상위 클래스에서 상속되어야 하는 기능을 구현해야 하는 경우 인터페이스를 사용해야 합니다.


rreee

위 내용은 PHP의 인터페이스 및 구현에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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