PHPの中のtrait,interfaceとabstract

1548 ワード

traitはコードの多重化のために書かれた小さなプラグインのように見えますが、includeに似ていて、useをクラスの真ん中に置いて、traitの中で定義された方法をclassの一部として、それ自体が直接インスタンス化できません.
interfaceのメソッドはすべて仮想的であり,継承時にこれらのメソッドを再定義する必要がある.つまり、方法は性質を説明しており、実際の操作はありませんが、継承するときは、これらの方法を実現する必要があります.そうしないと、エラーが発生し、欠落することはできません.interfaceはアーキテクチャによく使用される場合、1つのインスタンスが持つ属性とメソッドを抽象的に定義します.簡単に言えば、合意のようなもので、ボスが下した任務です.あなたが継承するには、この合意を満たさなければなりません.つまり、ボスが下した任務を完成しなければなりません.
abstract:abstractがクラスに作用する場合、このクラスは抽象クラスに限定され、継承にのみ使用され、オブジェクトをインスタンス化できません.抽象クラスには必ずしも抽象メソッドが含まれているわけではありませんが、抽象メソッドは必ず抽象クラスに存在し、この抽象クラスを継承するサブクラスはすべてその抽象メソッドを実現しなければなりません.そうしないと、サブクラスも抽象クラスとして識別されます.抽象メソッドは布団クラス継承で実現しなければならないのでprivate修飾子でabstract抽象メソッドを限定することはできず,publicとprotectedで修飾することができる.
interface
インタフェースクラスを定義し、その中の方法はサブクラスが実現しなければならない.インタフェースはクラスのテンプレートであり、そのサブクラスはインタフェースで定義されたすべての方法を実装する必要があります.
interface User{

    function getHeight($height);

    function getWeight($weight); 

}

class my implements User{

    function getHeight($username){

        echo $height;

    }

    function getWeight($weight){

        echo $weight;

    }

}

abstract
抽象クラスはクラス像の部分を抽出し,重複するものを抽象クラスに書き,作業量を減らす.メソッドがabstractで宣言されていない限り、そのサブクラスでは実装されません.また、サブクラスでは、この方法は共通の方法です.
abstract User{

    abstract function getHeight($height);

    function getWeight(){

        echo $weight;

    }

}

class my extends User{

    function getHeight($height){

         echo $height;

    }

    function getInfoById($id){

        $this->getWeight.“
”; echo $id; } }