PHP_php 기술에서 추상 클래스와 인터페이스 간의 차이점과 선택 분석

WBOY
풀어 주다: 2016-05-16 19:55:27
원래의
1027명이 탐색했습니다.

이 기사에서는 예제를 통해 PHP의 추상 클래스와 인터페이스의 차이점과 선택을 분석합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

차이:

1. 인터페이스는 키워드 Implements를 통해 사용됩니다. 추상 클래스의 사용은 키워드 확장을 통해 이루어집니다. 물론 인터페이스는 키워드 확장을 통해 상속될 수도 있습니다.

2. 멤버 변수(클래스 정적 변수 포함)는 인터페이스에서 선언할 수 없지만 클래스 상수는 선언할 수 있습니다. 데이터 캡슐화를 구현하기 위해 추상 클래스에서 다양한 유형의 멤버 변수를 선언할 수 있습니다. (또한 JAVA 인터페이스의 멤버변수는 반드시 public static final type으로 선언되어야 합니다.)

<&#63;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;
&#63;>

로그인 후 복사

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

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

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

추상 클래스 또는 인터페이스

1. 밀접하게 관련된 일부 객체에 채택될 모델을 생성하려는 경우 추상 클래스를 사용할 수 있습니다. 관련되지 않은 여러 개체에서 채택할 기능을 만들려면 인터페이스를 사용하세요.

2. 동작이 여러 소스에서 상속되어야 하는 경우 인터페이스를 사용하세요.

3. 모든 클래스가 공통 동작 구현을 공유한다는 것을 알고 있다면 추상 클래스를 사용하고 그 안에 동작을 구현하세요.

더 많은 PHP 관련 콘텐츠에 관심이 있는 독자는 이 사이트에서 "PHP 네트워크 프로그래밍 기술 요약", "PHP 기본 구문 튜토리얼 소개", "PHP 운영 오피스 문서 스킬 요약(워드, 엑셀, 액세스, ppt 포함)", "PHP 날짜 및 시간 사용 요약", "PHP 객체지향 프로그래밍 입문 튜토리얼》, "php 문자열(문자열) 사용법 요약", "php mysql 데이터베이스 작업 입문 튜토리얼" 및 "php 일반 데이터베이스 작업 스킬 요약"

이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿