php抽象インタフェースの詳細

10322 ワード

オブジェクト向けプログラミングではインタフェースが多く使われていますが、インタフェースは何ですか.私個人はインタフェースがプロトコルであることを理解しています.私たちが何かを使ったら、守らなければならないプロトコルです.しかし、この合意はあなたに何かを要求するだけで、あなたがどのようにしても、つまりその方法を実現しなければなりません.どのように自分でしなければなりません.ここでインタフェースの文法を直接話すと、あまり意味がないような気がしますので、実現と思想の変化から分析します.抽象クラス:
abstract class Abs {
    abstract protected function getName();
}

class MyClass extends Abs{
    public function getName() {
    }
}

インタフェースクラスはabstractで始まり、クラス属性を定義できますが、抽象ではありません.その内部メソッドはabstractで修飾されます.抽象メソッドは{}を追加する必要がなく、直接';最後に、メソッドにパラメータを追加するとデフォルトで、抽象クラスを継承するクラスは、その抽象的なメソッドを実装する必要があり、パラメータのタイプと数が一致し、アクセス制御修飾子は、その抽象的なメソッド定義の制御修飾子以上である必要があります.インタフェース:
interface inter {

    public function getName();
}

class MyInter implements inter {

    public function getName() {

    }
}

インタフェースにとって相対的に純粋なのは、1つのインタフェースを定義することであり、すべての方法は抽象クラスのように独自のプライベートメソッドが存在しない可能性があり、属性を定義することもできず、インタフェースを実現するにはその基準に従ってインタフェースを実現しなければならない.
基礎文法の上で簡単に紹介しましたが、実際の開発での具体的な役割を詳しく説明します.私たちは宇宙人の妹をからかう考えを作りたいと思っていますが、私たちはきっとできませんか.emmmの比較技術はだめです.他の人にやらせましょう.ブーブー!誰かが注文を受けて、彼らは生産を始めました.
class Alien{

    private $language;

    function __construct($language) {
        $this->language = $language;
    }

    public function say() {
        echo $this->language;
    }
}

$alien = new Alien("   ");
$alien->say();

すぐにメーカーは多くの言語のサポートをして、すぐに機能が強くて、私たちは妹をからかっています.妹をからかう:妹:hi boy;宇宙人:hi;宇宙人:girl;宇宙人:can;.....そして私たちはこれが何の役にも立たないことに気づいて、一度に1つの単語しか話せないのは順調に妹を、妹を退屈に行かせて、いいでしょう.私たちはメーカーにやり直しを申請して流暢に話すように要求した.しかし、メーカーはそうではありません.卵が痛くて、私たちは別のメーカーに作るしかありません.いいですよ.人が注文を受けました.
class Alien {

    private $language = "";

    public function speak($speed) {
        echo $language."  ".$speed;
    }
}
$alien = new Alien("  ");
$alien->speak(2);

ブーブー!多言語で流暢な宇宙人が出てきて、ドラムを打ってみると、スイッチが元のものではないことに気づき、妹をからかうようになった.妹:こんにちは.宇宙人:こんにちは妹:どうしてこんなに可爱いの、宇宙人:私は可爱くない、ありがとう.妹:...まだ始まっていないのに失敗しましたこの宇宙人はユーモアがないので、上記の考えを繰り返して続けましょう.そしてn年が来ます...彼らが作った宇宙人はそうだったので、妹をからかっていません.
class Alien {
    private $language = "  ";
    public function setLanguage($language) {
        $this->language = $language;
    }
    public function say($speed) {
        echo $language."  :".$speed;
    }
}
$alien = new Alien();

こんなの.
class Alien {
    private $language = "  ";
    private $speed = 1public function setLanguage($language) {
        $this->language = $language;
    }

    public setSpeed($speed) {
        $this->speed = $speed;
    }

    public function say() {
        echo $language."  :".$speed;
    }
}
$alien = new Alien();

よし、誰がやったかは話さないで、こんなに多くの宇宙人がどのように使っているのか、私たちはもう気絶しているのに、妹をこのようにして孤生を注ぐ気がない.どうしようよ、そしてこのままではいろいろな宇宙人が現れるかもしれないから、きっとだめだよ.私自身に頼って、自分に頼ってはいけないと言って、一生自分で妹をからかうことはできない.いいでしょう、頭を絞って、私は1つの模型を設計してメーカーに私の模型に従って作らせると思って、ドゥドゥ!;
interface AlienModel {

    public function say();
}

はい、何も言わないでください.私はこのような機能だけを使って、このようにメーカーに渡しました.それからメーカーはいろいろなものを作って、一つ持ってきます.
class Alien {

    private $language = "  ";

    private $speed = 1;

    public function setLanguage($type){
        switch ($type) {
            case 1:
                $this->language = "  ";
                break;

            default:
                $this->language = "  ";
                break;
        }
    }

    public function say() {
        echo $this->language."  :".$speed;
    }

    public function setSpeed($speed) {
        $this->speed = $speed;
    }
}

これで私はそんなに多くなくても、スイッチを押して話を始めます.ギャル、これで私はどうしても同じキーを押すことができて、その他はメーカーのコントロールに属して、このように私は更にギャルを研究して、以上はコードの角度からインタフェースの定義と実際の作用に対して多くの言い方があることを説明して、私は料理よりこんなに多くのことを言うしかありません.https://www.zhihu.com/question/20111251/answer/99145627あ、こんなの参考になります