이 기사는 PHP의 추상 클래스, 인터페이스 및 특성에 관한 것입니다. 도움이 필요한 친구들도 이 기사의 내용을 참조할 수 있습니다.
설명서 참조:http ://php.net/manual/zh/언어.oop5.abstract.php
정의:PHP 5는 추상 클래스와 추상 메소드를 지원합니다. abstract로 정의된 클래스는 인스턴스화할 수 없습니다. 적어도 하나의 메소드가 추상으로 선언된 경우 모든 클래스는 추상으로 선언되어야 합니다. 그리고 추상 클래스를 상속할 때 하위 클래스는 상위 클래스의 모든 추상 메소드를 정의해야 합니다(상수는 추상 클래스에서 정의할 수 있음).
키워드: abstract
<?php abstract class AbstractClass { const NAME='张三'; // 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() { print $this->getValue() . "\n"; } } class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1".self::NAME; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; } } $class1 = new ConcreteClass1; $class1->printOut(); echo $class1->prefixValue('FOO_') ."\n";
키워드: 인터페이스
interface test1{ function say(); } interface test2{ function see(); } //接口继承接口 (继承接口时使用extends关键字) interface test3 extends test1,test2 { function sleep(); } //类实现接口(实现接口时使用 implements关键字) class test implements test1,test2{ public function say(){} public function see(){} public function sleep() { echo '休息'; } } //接口中只能有抽象方法(不能定义常量,不能有构造方法,不能有普通方法),且接口类中所有未实现的方法需要在子类中全部实现
참조 주소 https://www.cnblogs.com/smallrookie/p/6516010.html
PHP 5에서. 0 PHP 시작 새로운 코드 재사용 방식을 구현합니다.
<?php trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Aliased_Talker { use A, B { B::smallTalk insteadof A; //使用B类的smallTalk方法(替换A方法) A::bigTalk insteadof B; B::bigTalk as talk;//重命名 B类中的bigTalk方法重命名为talk方法 } } $obj = new Aliased_Talker; $obj->smallTalk(); //b $obj->bigTalk(); //A $obj->talk();//B //trait不能实例化,不能有常量관련 권장 사항:
PHP 객체 지향 인터페이스, 상속, 추상 클래스, 파괴, 복제 등과 같은 고급 기능의 자세한 예
의 특성 기능
위 내용은 추상 클래스, 인터페이스, 특성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!