Heim Backend-Entwicklung PHP-Tutorial 小弟我觉得好迷糊

小弟我觉得好迷糊

Jun 13, 2016 am 10:34 AM
method protected quot static

我觉得好迷糊啊

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?phpclass cA{    /**     * Test property for using direct default value     */    protected static $item = 'Foo';        /**     * Test property for using indirect default value     */    protected static $other = 'cA';        public static function method()    {        print self::$item."\r\n"; // It prints 'Foo' on everyway... :(        print self::$other."\r\n"; // We just think that, this one prints 'cA' only, but... :)    }        public static function setOther($val)    {        self::$other = $val; // Set a value in this scope.    }}class cB extends cA{    /**     * Test property with redefined default value     */    protected static $item = 'Bar';        public static function setOther($val)    {        self::$other = $val;    }}class cC extends cA{    /**     * Test property with redefined default value     */    protected static $item = 'Tango';        public static function method()    {        print self::$item."\r\n"; // It prints 'Foo' on everyway... :(        print self::$other."\r\n"; // We just think that, this one prints 'cA' only, but... :)    }        /**     * Now we drop redeclaring the setOther() method, use cA with 'self::' just for fun.     */}class cD extends cA{    /**     * Test property with redefined default value     */    protected static $item = 'Foxtrot';        /**     * Now we drop redeclaring all methods to complete this issue.     */}cB::setOther('cB'); // It's cB::method()!cB::method(); // It's cA::method()!cC::setOther('cC'); // It's cA::method()!cC::method(); // It's cC::method()!cD::setOther('cD'); // It's cA::method()!cD::method(); // It's cA::method()!/** * Results: -> * Foo * cB * Tango * cC * Foo * cD *  * What the hell?! :) */?>
Nach dem Login kopieren



这是覆盖,还是什么啊?为什么输出这样啊,不能理解啊,听乱的啊。

------解决方案--------------------
这叫什么呢?自找麻烦!
为累而累
------解决方案--------------------
不理解就算了,无所谓的事。
------解决方案--------------------
探讨

这叫什么呢?煮饺子找麻烦!
为累而累

------解决方案--------------------
这样可能会清楚些
PHP code
class cA{    /**     * Test property for using direct default value     * 使用直接默认值测试属性     */    protected static $item = 'Foo';        /**     * Test property for using indirect default value     * 使用间接默认值测试属性     */    protected static $other = 'cA';        public static function method()    {        print __METHOD__ . ' ' . __CLASS__ . '::$item=' . self::$item."\r\n";        print __METHOD__ . ' ' . __CLASS__ . '::$otfer=' . self::$other."\r\n";    }        public static function setOther($val)    {        self::$other = $val; // Set a value in this scope.    }}class cB extends cA{    /**     * Test property with redefined default value     * 重新定义了默认值测试属性     */    protected static $item = 'Bar';        public static function setOther($val)    {        self::$other = $val;    }}class cC extends cA{    /**     * Test property with redefined default value     * 重新定义了默认值测试属性     */    protected static $item = 'Tango';        public static function method()    {        print __METHOD__ . ' ' . __CLASS__ . '::$item=' . self::$item."\r\n";        print __METHOD__ . ' ' . __CLASS__ . '::$otfer=' . self::$other."\r\n";    }        /**     * Now we drop redeclaring the setOther() method, use cA with 'self::' just for fun.     */}class cD extends cA{    /**     * Test property with redefined default value     * 重新定义了默认值测试属性     */    protected static $item = 'Foxtrot';        /**     * Now we drop redeclaring all methods to complete this issue.     * 现在,我们放弃重新声明的所有方法来完成这个问题     */}cB::setOther('cB'); // It's cB::method()!cB::method(); // It's cA::method()!cC::setOther('cC'); // It's cA::method()!cC::method(); // It's cC::method()!cD::setOther('cD'); // It's cA::method()!cD::method(); // It's cA::method()!<div class="clear">
                 
              
              
        
            </div>
Nach dem Login kopieren
Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lösung für PHP Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion fetch() Lösung für PHP Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion fetch() Jun 23, 2023 am 09:36 AM

Wenn Sie PHP für die Entwicklung von Webanwendungen verwenden, müssen Sie häufig eine Datenbank verwenden. Bei der Verwendung einer Datenbank kommt es sehr häufig zu Fehlermeldungen. Unter diesen ist PHPFatalerror: Calltoamemberfunctionfetch() ein relativ häufiger Fehler, der auftritt, wenn PDO zum Abfragen der Datenbank verwendet wird. Was verursacht diesen Fehler und wie kann er behoben werden? In diesem Artikel wird es Ihnen ausführlich erklärt. 1. Fehlerursache

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Welche Funktion und Verwendung hat Static in der C-Sprache? Welche Funktion und Verwendung hat Static in der C-Sprache? Jan 31, 2024 pm 01:59 PM

Die Rolle und Verwendung von Statik in der C-Sprache: 1. Variablenbereich; Wenn das Schlüsselwort static vor einer Variablen steht, ist der Gültigkeitsbereich der Variablen auf die Datei beschränkt, in der sie deklariert ist. Mit anderen Worten, die Variable ist ein „Gültigkeitsbereich auf Dateiebene“, was sehr nützlich ist, um das „ zu verhindern. Problem der doppelten Definition von Variablen; 2. Lebenszyklus, statische Variablen werden einmal initialisiert, wenn die Ausführung des Programms beginnt, und zerstört, wenn das Programm endet usw.

So verwenden Sie „Static', „This', „Super' und „Final' in Java So verwenden Sie „Static', „This', „Super' und „Final' in Java Apr 18, 2023 pm 03:40 PM

1. static Bitte schauen Sie sich zuerst das folgende Programm an: publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello, world!");//(2)}} Habe das gesehen Segmentprogramme sind den meisten Leuten bekannt, die Java studiert haben. Auch wenn Sie kein Java, aber andere Hochsprachen wie C gelernt haben, sollten Sie die Bedeutung dieses Codes verstehen können. Es gibt lediglich „Hallo Welt“ aus und hat keine andere Verwendung. Es zeigt jedoch den Hauptzweck des statischen Schlüsselworts.

Praktische Anwendungsszenarien und Verwendungsfähigkeiten des statischen Schlüsselworts in der C-Sprache Praktische Anwendungsszenarien und Verwendungsfähigkeiten des statischen Schlüsselworts in der C-Sprache Feb 21, 2024 pm 07:21 PM

Praktische Anwendungsszenarien und Verwendungsfähigkeiten des Schlüsselworts static in der C-Sprache 1. Übersicht static ist ein Schlüsselwort in der C-Sprache, das zum Ändern von Variablen und Funktionen verwendet wird. Seine Funktion besteht darin, seinen Lebenszyklus und seine Sichtbarkeit während der Programmausführung zu ändern und Variablen und Funktionen statisch zu machen. In diesem Artikel werden die tatsächlichen Anwendungsszenarien und Verwendungstechniken des statischen Schlüsselworts vorgestellt und anhand spezifischer Codebeispiele veranschaulicht. 2. Statische Variablen verlängern den Lebenszyklus von Variablen. Die Verwendung des Schlüsselworts static zum Ändern lokaler Variablen kann deren Lebenszyklus verlängern.

So verwenden Sie die Java-Modifikatoren abstract, static und final So verwenden Sie die Java-Modifikatoren abstract, static und final Apr 26, 2023 am 09:46 AM

Modifikator abstract (abstract) 1. Abstract kann eine Klasse ändern (1) Die durch abstract geänderte Klasse wird als abstrakte Klasse bezeichnet (2) Syntax: abstractclass-Klassenname {} (3) Funktionen: Abstrakte Klassen können keine Objekte separat erstellen, sie können jedoch (4) Abstrakte Klassen können Mitgliedsvariablen und Mitgliedsmethoden definieren. Wenn sie zum Erstellen von Unterklassenobjekten verwendet werden, erstellt jvm standardmäßig ein übergeordnetes Klassenobjekt apply Wird angewendet, wenn JVM ein übergeordnetes Klassenobjekt erstellt. 2. Abstrakt kann Methoden ändern (1) Die durch asbtract geänderte Methode wird als abstrakte Methode bezeichnet (2) Syntax: Zugriffsmodifikator abstrakter Rückgabewert

Können wir in Java eine Klasse der obersten Ebene als geschützt oder privat deklarieren? Können wir in Java eine Klasse der obersten Ebene als geschützt oder privat deklarieren? Sep 12, 2023 pm 07:21 PM

Nein, wir können Klassen der obersten Ebene nicht als privat oder geschützt deklarieren. Es kann öffentlich oder standardmäßig sein (keine Modifikatoren). Wenn keine Modifikatoren vorhanden sind, sollte ein Standardzugriff vorhanden sein. Syntax //Atoplevelclass publicclassTopLevelClassTest{ //Classbody} Wenn eine Top-Level-Klasse als privat deklariert ist, meldet der Compiler einen Fehler mit der Meldung „Der Modifikator private ist hier nicht zulässig.“ Dies bedeutet, dass Klassen der obersten Ebene nicht privat sein können, dasselbe gilt für geschützte Zugriffe

Die Rolle der Statik Die Rolle der Statik Jan 24, 2024 pm 04:08 PM

Die Funktionen von Static: 1. Methoden; 3. Andere Verwendungen; Optimierung des Speicherlayouts; 11. Vermeiden Sie wiederholte Initialisierung. 12. Verwendung in Funktionen. Detaillierte Einführung: 1. Variablen, statische Variablen. Wenn eine Variable als statisch deklariert wird, gehört sie zur Klassenebene und nicht zur Instanzebene. Dies bedeutet, dass unabhängig von der Anzahl der erstellten Objekte nur eine statische Variable und alle Objekte vorhanden sind Teilen Sie diese statischen Variablen usw.

See all articles