PHP5 인터페이스 기술
PHP는 대부분의 객체 지향 프로그래밍 언어와 마찬가지로 다중 상속을 지원하지 않습니다. 즉, 각 클래스는 하나의 상위
클래스만 상속할 수 있습니다. 이 문제를 해결하기 위해 PHP에서는 인터페이스를 구현하는 클래스가 구현해야 하는 일련의 메서드를 지정하는 것이 인터페이스라는 개념을 도입했습니다. 인터페이스는 특별한
추상 클래스이고, 추상 클래스는 특수 클래스이므로 인터페이스도 특수 클래스입니다. 인터페이스를 특수 추상 클래스라고 하는 이유는 무엇입니까? 추상 클래스의 모든 메서드가
추상 메서드인 경우 "인터페이스"를 사용하도록 선언 메서드를 변경합니다. 즉, 인터페이스의 모든 메서드는 추상 메서드로
선언되어야 하며 선언할 수 없습니다. 인터페이스의 변수 및 인터페이스의 모든 멤버는 공개 권한을 갖습니다.
따라서 서브클래스도 구현할 때 공개 권한 제한을 사용해야 합니다.
클래스를 선언할 때 사용하는 키워드는 "class"이고 인터페이스는 특수 클래스이며
사용되는 키워드는 "interface"입니다.
클래스 정의: 클래스 클래스 이름 {...}, 인터페이스 선언: 인터페이스 인터페이스 이름 { … }
코드 조각
<?php abstract class Demo{ var $test; abstract function fun1(); abstract function fun2(); function fun3(){ … . } } $demo=new Demo(); //抽象类为能产生实例对象,所以这样做是错的,实例化对象交给子类 class Test extends Demo{ function fun1(){ … } function fun2(){ … } } $test=new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法 ?>위의 예에서는 인터페이스의 모든 메서드가 추상 메서드이기 때문에 두 개의 추상 메서드 "fun1"과 "fun2"를 선언하는 인터페이스 "one"이 정의되어 있으므로 선언할 때 추상 메서드인 경우에는 추상 클래스처럼 "abstract" 키워드를 사용할 필요가 없습니다. 또한 이 키워드는 기본적으로 추가되었으므로 인터페이스의 "public" 액세스 권한도 제거할 수 있습니다. 공용이며 인터페이스의 모든 멤버는 공용이어야 하기 때문에 인터페이스의 멤버에 대해 "개인" 및 "보호" 권한을 사용할 수 없으며 공용 또는 기본값을 사용해야 합니다. 또한 인터페이스에서 상수 "constant"를 선언했습니다. 인터페이스에서는 변수를 멤버로 사용할 수 없기 때문에 const 키워드 선언을 사용해야 합니다.
인터페이스는 특별한 추상 클래스이므로 그 안의 모든 메서드는 추상 메서드이므로 인터페이스는 인스턴스 개체를 생성할 수 없으며 모든 추상 메서드는 하위 클래스로 구현되어야 합니다.
"extends" 키워드를 사용하면 하나의 인터페이스가 다른 인터페이스를 상속할 수 있습니다.
코드 조각
<?php //使用”extends”继承另外一个接口 interface Two extends One{ function fun3(); function fun4(); } ?>
<?php //使用“implements”这个关键字去实现接口中的抽象方法 class Three implements One{ function fun1(){ … . } function fun2(){ … . } } //实现了全部方法,我们去可以使用子类去实例化对象了 $three=new Three(); ?>
<?php //使用implements实现多个接口 class Four implemtns 接口一, 接口二, … .{ //必须把所有接口中的方法都要实现才可以实例化对象。 } ?>
<?php //使用extends继承一个类,使用implements实现多个接口 class Four extends 类名一implemtns 接口一, 接口二, … .{ //所有接口中的方法都要实现才可以实例化对象 … … … .. } ?>
을 구현해야 합니다.
위 내용은 PHP 객체지향 인터페이스 기술 사례에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!