> 백엔드 개발 > PHP 문제 > PHP 추상 클래스와 인터페이스의 차이점은 무엇입니까

PHP 추상 클래스와 인터페이스의 차이점은 무엇입니까

青灯夜游
풀어 주다: 2023-03-09 16:36:02
원래의
2615명이 탐색했습니다.

차이점: 1. 인터페이스의 키워드는 구현이고 추상 클래스의 경우 확장입니다. 2. 인터페이스는 멤버 변수를 선언할 수 없지만 추상 클래스는 선언할 수 있습니다. 3. 인터페이스에는 생성자가 있습니다. 4. 인터페이스 메서드는 다음과 같습니다. 5. 클래스는 동시에 여러 인터페이스를 구현할 수 있으며 하나의 추상 클래스에서만 상속할 수 있습니다.

PHP 추상 클래스와 인터페이스의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터

차이:

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

2. 멤버 변수(클래스 정적 변수 포함)는 인터페이스에서 선언할 수 없지만 클래스 상수는 선언할 수 있습니다. 데이터 캡슐화를 구현하기 위해 추상 클래스에서 다양한 유형의 멤버 변수를 선언할 수 있습니다. (또한 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. 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있을 수 있습니다.

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

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

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

  • 밀접하게 관련된 일부 개체에서 채택할 모델을 만들고 싶다면 추상 클래스를 사용할 수 있습니다. 관련되지 않은 여러 개체에서 채택할 기능을 만들려면 인터페이스를 사용하세요.
  • 여러 소스에서 동작을 상속해야 하는 경우 인터페이스를 사용하세요.
  • 모든 클래스가 공통 동작 구현을 공유한다는 것을 알고 있다면 추상 클래스를 사용하고 그 안에 해당 동작을 구현하세요.

추천 학습: "PHP 비디오 튜토리얼"

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

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