PHP는 대부분의 객체 지향 프로그래밍 언어와 마찬가지로 다중 상속을 지원하지 않습니다. 즉, 각 클래스는 하나의 상위 클래스에서만 상속받을 수 있습니다. 이 문제를 해결하기 위해 PHP에서는 인터페이스를 구현하는 클래스가 구현해야 하는 일련의 메서드를 지정하는 것이 인터페이스라는 개념을 도입했습니다. 인터페이스는 특수 추상 클래스이고 추상 클래스도 특수 클래스이므로 인터페이스도 특수 클래스라고 하는 이유는 무엇입니까? 추상 클래스의 모든 메소드가 추상 메소드인 경우 다른 선언 메소드에서 "인터페이스"를 사용합니다. 즉, 인터페이스의 모든 메소드는 추상 메소드로 선언되어야 하며 변수는 인터페이스에서 선언될 수 없습니다. 상수를 선언할 수 있음) 인터페이스의 모든 멤버는 공개 권한을 갖습니다. 따라서 하위 클래스가 구현되면 또한 공개 권한을 사용해야 합니다.
클래스를 선언할 때 "class"라는 키워드를 사용하며, 인터페이스는 특수 클래스이며 사용된 키워드는 "interface"입니다.
클래스 정의: class; 클래스 이름 { … },
인터페이스 선언: 인터페이스 인터페이스 이름 { …}
/ /정의 인터페이스 키워드를 사용하는 인터페이스, "One"은 인터페이스 이름입니다.
interface One
{
//상수 정의
const 상수 = '상수 value';
//추상 메소드 "fun1"이 정의됨
공용 함수 fun1();
// 정의된 추상 메소드 "fun2"
공용 함수 fun2();
}
?>
위의 예에서는 두 개의 추상 메서드 "fun1"과 "fun2"를 선언하는 인터페이스 "one"이 정의되어 있습니다. 인터페이스의 모든 메서드는 추상 메서드이므로 추상 메서드를 선언할 때 사용할 필요가 없습니다. 추상 클래스와 같은 "추상" 키워드는 기본적으로 추가되었습니다. 또한 인터페이스의 모든 멤버가 모두 공개되어야 하기 때문에 인터페이스의 "공용" 액세스 권한도 제거할 수 있습니다. 공개이므로 인터페이스의 멤버에 대해 "개인" 및 "보호" 권한을 사용할 수 없습니다. 공개 또는 기본값을 사용해야 합니다. 또한 인터페이스에서 상수 "constant"를 선언했습니다. 인터페이스에서는 변수 멤버를 사용할 수 없기 때문에 사용해야 합니다. const 키워드 선언.
인터페이스는 특별한 추상 클래스이기 때문에 그 안의 모든 메소드는 추상 메소드이므로 인터페이스는 인스턴스 객체를 생성할 수 없습니다. 모든 추상 메소드를 서브클래스에서 구현해야 한다는 것도 사양입니다.
"extends" 키워드를 사용하여 한 인터페이스가 다른 인터페이스를 상속하도록 할 수 있습니다. < ;?php
//"extends"를 사용하여 다른 인터페이스 상속
interface Two extends One
{
function fun3();
function fun4();
}
?>
그리고 이를 구현하기 위해 인터페이스의 하위 클래스를 정의합니다. 인터페이스의 모든 추상 메서드에서 사용되는 키워드는 앞서 언급한 "확장" 대신 "구현"입니다. >
//인터페이스에서 추상 메서드를 구현하려면 "implements"라는 키워드를 사용합니다.
class 3개는 하나를 구현합니다. {
function fun1() {
...
}
함수 fun2 () {
...
}}//모든 메소드가 구현된 후 하위 클래스를 사용하여 객체를 인스턴스화할 수 있습니다
$ three=new Three();?>
추상 클래스를 사용하여 인터페이스에서 일부 추상 메소드를 구현할 수도 있지만 객체를 인스턴스화하려면 이 추상 클래스에 모든 추상 메소드를 구현하는 하위 클래스가 있어야 합니다.앞서 말했듯이 PHP는 단일 상속입니다. 클래스는 하나의 상위 클래스만 가질 수 있지만 클래스는 여러 인터페이스를 구현할 수 있습니다. 이는 우리의 사양과 마찬가지로 클래스가 여러 사양을 준수해야 하는 것과 같습니다. 국가의 법률을 따르지만 학교에 있는 경우 학교 규칙도 준수해야 합니다. //구현을 사용하여 다중 인터페이스 구현
클래스 4 구현 인터페이스 1, 인터페이스 two , ...
{//클래스를 상속하려면 확장을 사용하고 여러 인터페이스를 구현하려면 구현을 사용합니다클래스 4개 확장 클래스 이름 1 구현mtns 인터페이스 1, 인터페이스 2, ...{
// 객체를 인스턴스화하기 전에 인터페이스의 모든 메소드를 구현해야 합니다
...}?>
위 내용은 "땅콩튀김"에서 인용한 내용입니다. 형님 공유해주셔서 감사합니다.
위 내용은 내용의 측면을 포함하여 PHP 객체지향 OOP 인터페이스 인터페이스를 소개한 내용이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.