차이:
1. 인터페이스의 사용은 키워드 구현을 통해 이루어집니다. 추상 클래스는 extends 키워드를 통해 사용됩니다. 물론 인터페이스는 키워드 확장을 통해 상속될 수도 있습니다.
2. 멤버 변수(클래스 static변수 포함)는 인터페이스에서 선언할 수 없지만 클래스 상수는 선언할 수 있습니다. 데이터 캡슐화를 구현하기 위해 추상 클래스에서 다양한 유형의 멤버 변수를 선언할 수 있습니다. (또한 JAVA 인터페이스의 멤버 변수는 public static 최종 유형으로 선언되어야 합니다.)
<?php abstract class Father { function meth1() { echo "meth1...<br>"; } abstract function meth2(); public $var1="var1"; public static $var2="var2"; const Var3="Var3"; } class Son extends Father { function meth2() { echo "meth2 of Son...<br>"; } } $s=new Son(); echo $s->var1."<br>"; echo Father::$var2."<br>"; echo Father::Var3."<br>"; Interface IFather { //public $iVar1="iVar1"; 此处接口定义中不能包含成员变量 //public static $iVar2="iVar2"; 此处接口定义中不能包含静态变量 const iVar3="iVar3"; function iMeth1(); } Class ISon implements IFather { function iMeth1() { echo "iMeth1...<br>"; } } $is=new ISon(); echo IFather::iVar3; ?>
3. 인터페이스에는 constructor가 없으며 추상 클래스에는 생성자가 있을 수 있습니다.
4. 인터페이스의 메서드는 기본적으로 공개 유형인 반면 추상 클래스의 메서드는 비공개, 보호 또는 공개로 수정될 수 있습니다.
5. 클래스는 동시에 여러 인터페이스를 구현할 수 있지만 클래스는 하나의 추상 클래스에서만 상속할 수 있습니다.
추상 클래스 또는 인터페이스.
밀접하게 관련된 일부 개체에서 채택할 모델을 만들고 싶다면 추상 클래스를 사용할 수 있습니다. 관련되지 않은 여러 개체에서 채택할 기능을 만들려면 인터페이스를 사용하세요.
여러 소스에서 행동을 상속해야 하는 경우 인터페이스를 사용하세요.
모든 클래스가 공통 동작 구현을 공유한다는 것을 알고 있다면 추상 클래스를 사용하고 그 안에 동작을 구현하세요.
위 내용은 PHP 추상 클래스와 인터페이스, 선택한 인스턴스 간의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!