>백엔드 개발 >PHP 튜토리얼 >추상 클래스, 인터페이스, 특성

추상 클래스, 인터페이스, 특성

不言
不言원래의
2018-04-04 14:00:221458검색

이 기사는 PHP의 추상 클래스, 인터페이스 및 특성에 관한 것입니다. 도움이 필요한 친구들도 이 기사의 내용을 참조할 수 있습니다.


추상 클래스


설명서 참조:http ://php.net/manual/zh/언어.oop5.abstract.php

정의:PHP 5는 추상 클래스와 추상 메소드를 지원합니다. abstract로 정의된 클래스는 인스턴스화할 수 없습니다. 적어도 하나의 메소드가 추상으로 선언된 경우 모든 클래스는 추상으로 선언되어야 합니다. 그리고 추상 클래스를 상속할 때 하위 클래스는 상위 클래스의 모든 추상 메소드를 정의해야 합니다(상수는 추상 클래스에서 정의할 수 있음).

키워드: abstract

<?php
abstract class AbstractClass
{
    const NAME=&#39;张三&#39;;
 // 强制要求子类定义这些方法
    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(&#39;FOO_&#39;) ."\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 &#39;休息&#39;;
  }

}
//接口中只能有抽象方法(不能定义常量,不能有构造方法,不能有普通方法),且接口类中所有未实现的方法需要在子类中全部实现



Trait는 다중 상속을 구현합니다

참조 주소 https://www.cnblogs.com/smallrookie/p/6516010.html

정의:

PHP 5에서. 0 PHP 시작 새로운 코드 재사용 방식을 구현합니다.

<?php
trait A {
    public function smallTalk() {
        echo &#39;a&#39;;
    }
    public function bigTalk() {
        echo &#39;A&#39;;
    }
}
trait B {
    public function smallTalk() {
        echo &#39;b&#39;;
    }
    public function bigTalk() {
        echo &#39;B&#39;;
    }
}
 
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 인터페이스 첫 소개

특성 공유 PHP


의 특성 기능

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.