Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Merkmale von objektorientiertem PHP? Einführung in objektorientierte Funktionen von PHP (Code)

Was sind die Merkmale von objektorientiertem PHP? Einführung in objektorientierte Funktionen von PHP (Code)

不言
不言Original
2018-07-24 16:19:012739Durchsuche

Die hier erwähnte objektorientierte PHP-Programmierung sollte genauer gesagt als objektorientierte PHP-Programmierung bezeichnet werden. Die drei grundlegenden Merkmale der objektorientierten PHP-Programmierung sind Kapselung, Vererbung und Polymorphismus PHP separat. Drei Hauptmerkmale.

Drei Hauptmerkmale von PHP-Objektorientierung:
Kapselung besteht darin, abstrahierte Daten und Operationen auf den Daten zu kapseln, und die Daten werden intern geschützt Teile des Programms können die Daten nur durch autorisierte Operationen (Mitgliedsmethoden) bearbeiten.

Zugriffskontrollzeichenzuweisungswert.png

2 Vererbung:

Die sogenannte Vererbung besteht darin, dass eine Unterklasse die übergeordnete Klasse erweitert Elternklasse Einige (öffentliche/geschützte) Eigenschaften und (öffentliche/geschützte) Methoden werden vererbt. Private kann nicht vererbt werden.

  作用:增加代码复用性,管理代码成本低。
 
  基本语法:
  class 类名 extends 父类名 {
        //需要的非私有属性和方法
  }

Inheritance.png

<?php
    
    //父类
    Class Student {
        public $name;
        protected $age;
        protected $grade;

        // public __construct() {

        // }

        public function showInfo() {
            echo $this -> name."<br/>".$this -> age;
        }
    }

    /**
    * 小学生
    */
    class Pupil extends Student
    {
        public function test() {
            echo "<br/>小学生在考试。。。";
        }
    }

    /**
    * 大学生
    */
    class Graduate extends Student
    {
        public function test() {
            echo "<br/>大学生在考试。。。";
        } 
    }

    $stu1 = new Pupil();
    $stu1 -> name = "lizzy";
    $stu1 -> test();
    $stu1 -> showInfo();

    $stu2 = new Graduate();
    $stu2 -> name = "zxm";
    $stu2 -> test();
    $stu2 -> showInfo();
?>

Hinweis:

(1) Geschützte Attribute und Methoden sind geschützt und können nicht direkt in Unterklassen aufgerufen werden in Unterklassen definiert.

Class ParentClass {
    public $name = &#39;lizzy&#39;;
    protected $age = 24;
    private $sex = "女";

    public function test1() {
        echo "<br/>展示public方法";
    }

    protected function test2() {
        echo "<br/>展示protected方法";
    }

    private function test3() {
        echo "<br/>展示private方法";
    }
}

Class SubClass extends ParentClass {
    function show() {
        echo "age=".$this->age;
        // echo "sex=".$this->sex;//是不能继承下来的
        $this -> test2();
    }
}

$sub1 = new SubClass();
$sub1 -> show();
$sub1 -> test1();

(2) Wenn Sie möchten, dass die Unterklasse den Konstruktor der übergeordneten Klasse oder andere Methoden (öffentlich/geschützt) aufruft, können Sie class name::method name; oder parent::method name;

verwenden

Class A {
    public $n1=90;

    public function __construct() {
        echo "A的构造方法";
    }
}

Class B extends A {
    function __construct() {
        echo "B的构造方法";
        //调用父类的两种方法
        // A::__construct();
        parent::__construct();
    }
}
$b = new B();

(3) Wenn eine Unterklassenmethode vollständig mit der übergeordneten Klassenmethode (geschützt/öffentlich) übereinstimmt, nennen wir es Methodenüberschreiben (Umschreiben).

3. Polymorphismus:

„Überladung“ ist eine Manifestation des Klassenpolymorphismus
Das Konzept der Überladung: Der Funktionsname ist derselbe, aber die Anzahl oder Parametertypen der Funktion sind unterschiedlich. um denselben Funktionsnamen aufzurufen, können jedoch verschiedene Funktionen unterschieden werden.

Magische Funktion __call, ihre Verwendung wird jedoch nicht empfohlen; wenn ein Objekt eine Methode aufruft und die Methode nicht existiert, ruft das System automatisch __call auf.

<?php

    Class A {

        public function test1($p) {
            echo "接收一个参数<br/>";
        }

        public function test2($p) {
            echo "接收两个参数<br/>";
        }

        //提供__call 它一个对象调用某个方法,而该方法不存在,则系统会自动调用__call
        function __call($method,$p) {
            if ($method == "test") {
                if (count($p) == 1) {
                    $this -> test1($p);
                } elseif (count($p) == 2) {
                    $this -> test2($p);
                }
            }
        }
    }

    $a = new A();
    $a -> test(1);
    $a -> test(21,43)
?>

Gemeinsame magische Konstanten: zwei Unterstriche, LINE, zwei Unterstriche;

zwei Unterstriche, FILE, zwei Unterstriche; Methodenüberschreibung /Override:
1. Wenn eine übergeordnete Klasse weiß, dass alle Unterklassen eine Methode haben, die übergeordnete Klasse jedoch nicht sicher ist, wie die Methode geschrieben werden soll, kann sie die Unterklasse diese Methode überschreiben lassen.

Verwenden Sie wie folgt:

<?php

    Class Animal {
        function cry() {
            echo "不知道怎么叫";
        }
    }

    //重写
    Class Dog extends Animal {
        function cry() {
            echo "小狗汪汪叫";
        }
    }

    //重写
    Class Pig extends Animal {
        function cry() {
            echo "小猪哼哼叫";
        }
    }

    $dog = new Dog();
    $dog -> cry();
    $pig = new Pig();
    $pig -> cry();

?>

Details zum Umschreiben der Methode:
1. Der Funktionsname und die Anzahl der Parameter der umgeschriebenen Unterklasse müssen mit denen der übergeordneten Klasse übereinstimmen Die Parameter müssen nicht identisch sein.

2. Wenn die Unterklasse eine Methode der übergeordneten Klasse (public/protected) aufrufen möchte, können Sie parent::method name(); oder parent class name::method name(); verwenden und Parameter übergeben je nach Situation.

3. Bei der Implementierung der Methodenabdeckung können die Zugriffsmodifikatoren unterschiedlich sein, sie müssen jedoch den Zugriffsbereich der Unterklasse >= den Zugriffsbereich der übergeordneten Klasse erfüllen.

Polymorphismus spiegelt sich wider in:
Wenn die Unterklasse die Methode der übergeordneten Klasse nicht überschreibt, ruft die Unterklasse die Methode der übergeordneten Klasse auf . .

Verwandte Empfehlungen:

PHP Null-basiertes Einführungs-Tutorial

Sprechen Sie über mein Verständnis von objektorientiert in PHP

Das obige ist der detaillierte Inhalt vonWas sind die Merkmale von objektorientiertem PHP? Einführung in objektorientierte Funktionen von PHP (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn