Heim  >  Artikel  >  Backend-Entwicklung  >  Objektorientierter PHP-Leitfaden zur Verwendung des Schlüsselworts finalstaticconst

Objektorientierter PHP-Leitfaden zur Verwendung des Schlüsselworts finalstaticconst

高洛峰
高洛峰Original
2017-01-06 14:01:351518Durchsuche

14. Anwendung des Schlüsselworts final
Dieses Schlüsselwort kann nur zum Definieren von Klassen und Methoden verwendet werden, da
final eine Konstante bedeutet. Die Funktion wird zum Definieren von Konstanten in PHP verwendet, daher kann final nicht zum Definieren von Mitgliedseigenschaften verwendet werden.
Klassen, die mit dem Endschlüssel markiert sind, können nicht vererbt werden;
Codefragmente
Endklasse Person{
… …
}
Klasse Student erweitert Person{
}
Ja Der folgende Fehler tritt auf:
Schwerwiegender Fehler: Klasse Student darf nicht von der endgültigen Klasse (Person) erben
Mit dem endgültigen Schlüssel markierte Methoden können nicht von Unterklassen überschrieben werden und sind die endgültige Version; class Person{
final function say() {
}
}
class Student erweitert Person{
function say() {
}
}
Der folgende Fehler wird auftreten:
Schwerwiegender Fehler: Die endgültige Methode Person::say() kann nicht überschrieben werden
15. Verwendung von statischen und const-Schlüsselwörtern
Statisches Schlüsselwort beschreibt Mitgliedseigenschaften und Mitgliedsmethoden in der Klasse als statische Mitglieder sind die Vorteile?
Zuvor haben wir den Menschen als „Person“ deklariert. Wenn wir in der Klasse „Person“ ein Attribut „des Landes, zu dem die Person gehört“ hinzufügen
, können wir die Klasse „Person“ verwenden, um Hunderte zu instanziieren oder mehr Instanzobjekte, jedes Objekt wird das Attribut „Land“ haben. Wenn das Projekt für die Chinesen entwickelt wird, dann hat jedes Objekt das Attribut „China“ und andere Attribute sind unterschiedlich. Wenn wir das Attribut „Land“ zu einem statischen
-Mitglied machen, gibt es nur ein Länderattribut im Speicher, und es gibt Hunderte oder mehr Objekte, die dieses Attribut
extern einschränken können Zugriff, da statische Mitglieder zur Klasse gehören und keiner Objektinstanz angehören. Ihnen wird Speicherplatz zugewiesen, wenn die Klasse zum ersten Mal geladen wird, und sie werden nur mit Instanzen der Klasse geteilt kann
die Mitglieder der Klasse bis zu einem gewissen Grad schützen
Lassen Sie es uns aus der Perspektive des Speichers analysieren. Das Objekt wird im „Heap-Speicher“ platziert. Die Referenz des Objekts wird im „Stapelspeicher“ platziert und die statischen Mitglieder werden im „initialisierten statischen Segment“ platziert, wenn die Klasse zum ersten Mal geladen wird
Wenn sie platziert wird, kann sie von jedem Objekt gemeinsam genutzt werden im Heap-Speicher, wie unten gezeigt; Statische Variablen der Klasse




sind den globalen Variablen sehr ähnlich und können von allen Klassen verwendet werden. Das Gleiche gilt für statische Methoden von Klassen
, ähnlich globalen Funktionen.
Codeausschnitt

<? 
class Person{ 
//下面是人的静态成员属性 
public static $myCountry="中国"; 
// var $name; //人的名子 
//这是人的静态成员方法 
public static function say(){ 
echo "我是中国人<br>"; 
} 
} 
//输出静态属性 
echo Person::$myCountry; 
//访问静态方法 
Person::say(); 
//重新给静态属性赋值 
Person::$myCountry="美国"; 
echo Person::$myCountry; 
?>

Da statische Mitglieder beim ersten Laden der Klasse erstellt werden, kann auf statische Mitglieder über den Klassennamen zugegriffen werden, ohne dass ein Objekt außerhalb der Klasse erforderlich ist, wie oben erwähnt. Jedes Instanzobjekt dieser Klasse wird gemeinsam genutzt Können wir also das Objekt verwenden, um auf die statischen Mitglieder in der Klasse zuzugreifen? Aus dem Bild oben können wir ersehen, dass nicht in jedem Objekt statische Mitglieder vorhanden sind, sondern jedes Objekt gemeinsam genutzt werden kann. Wenn wir also ein Objekt verwenden, um auf Mitglieder zuzugreifen, gibt es keine solche Attributdefinition und auf das Objekt kann nicht zugegriffen werden. Statische Mitglieder. In anderen objektorientierten Sprachen, wie z. B. Java, können Sie Objekte verwenden, um auf statische Mitglieder in PHP zuzugreifen. Wir sollten versuchen, sie nicht zu verwenden, da wir bei der Arbeit statische Mitglieder verwenden In einem Projekt besteht der Zweck darin, den Klassennamen für den Zugriff zu verwenden. Statische Methoden in einer Klasse können nur auf die statischen Attribute der Klasse zugreifen. Der Grund dafür ist sehr einfach In der Klasse müssen wir die Referenz $this verwenden, und der Referenzzeiger $this stellt das Objekt dar, das diese Methode aufruft. Wir sagten, dass statische Methoden nicht mit Objekten aufgerufen werden, sondern über Namen, sodass es überhaupt kein Objekt gibt , und Es gibt keine $this-Referenz, auf nicht-statische Mitglieder in der Klasse kann nicht zugegriffen werden. Und da auf die statischen Mitglieder in der Klasse ohne Objekte zugegriffen werden kann, können die statischen Methoden in der Klasse nur auf die zugreifen Statische Attribute: Da $this nicht existiert, verwenden wir eine spezielle Klasse „self“, um auf andere statische Mitglieder in einer statischen Methode zuzugreifen. self ähnelt $this, außer dass self die Klasse darstellt, in der sich diese statische Methode befindet . In einer statischen Methode können Sie also den „Klassennamen“ der Klasse verwenden, in der sich die Methode befindet, oder Sie können „self“ verwenden, um auf andere statische Mitglieder zuzugreifen. Wenn keine besonderen Umstände vorliegen, verwenden wir normalerweise Letzteres ist, „self::member“-Eigenschaften“ Weg.
Codeausschnitt

<? 
class Person{ 
//下面是人的静态成员属性 
public static $myCountry="中国"; 
//这是人的静态成员方法, 通过self访问其它静态成员 
public static function say(){ 
echo "我是".self::$myCountry."<br>"; 
} 
} 
//访问静态方法 
Person::say(); 
?>

Kann auf statische Mitglieder in nicht statischen Methoden zugegriffen werden? Natürlich ist dies möglich, aber „$this“ darf nicht auch Klassennamen oder „self“ verwenden. :Form der Mitgliedsattribute".
const ist ein Schlüsselwort zum Definieren von Konstanten in PHP. Um Konstanten in einer Klasse zu definieren, verwenden Sie das Schlüsselwort „const“, das dem in C ähnelt . #define Wenn der Wert von
im Programm geändert wird, tritt ein Fehler auf. Auf die mit „const“ geänderten Elementattribute wird auf die gleiche Weise zugegriffen wie auf die mit „static“ geänderten Elemente und auf den „Klassennamen“. wird auch das Schlüsselwort „self“ innerhalb der Methode verwendet. Sie müssen jedoch nicht das Symbol „$“ verwenden und können nicht über Objekte darauf zugreifen.
Codeausschnitte

<?php 
class MyClass{ 
//定义一个常量constant 
const constant = &#39;constant value&#39;; 
function showConstant() { 
echo self::constant . "\n"; //使用self访问,不要加”$” 
} 
} 
echo MyClass::constant . "\n"; //使用类名来访问,也不加”$” 
$class = new MyClass(); 
$class->showConstant(); 
// echo $class::constant; 是不允许的

Weitere objektorientierte PHP-Anleitungen und verwandte Artikel zur Verwendung des Schlüsselworts finalstaticconst finden Sie auf der chinesischen PHP-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