小弟我觉得好迷糊
我觉得好迷糊啊
- 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?! :) */?>
这是覆盖,还是什么啊?为什么输出这样啊,不能理解啊,听乱的啊。
------解决方案--------------------
这叫什么呢?自找麻烦!
为累而累
------解决方案--------------------
不理解就算了,无所谓的事。
------解决方案--------------------
------解决方案--------------------
这样可能会清楚些
- 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>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用PHP進行web應用開發時,很多時候會需要使用資料庫。而在使用資料庫時,錯誤提示是非常常見的事情。其中,PHPFatalerror:Calltoamemberfunctionfetch()是比較常見的錯誤,它會在使用PDO查詢資料庫時出現。那麼,這個錯誤是怎麼造成的,以及該如何解決呢?本文將為大家詳細闡述。一、錯誤產生原

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

c語言static的作用與用法:1、變數作用域;2、生命週期;3、函數內部;4、修飾全域變數;5、修飾函數;6、其他用途;詳細介紹:1、變數作用域,當一個變數前有static關鍵字,那麼這個變數的作用域被限制在聲明它的檔案內,也就是說,這個變數是“檔案層級作用域”,這對於防止變數的“重複定義”問題很有用; 2、生命週期,靜態變數在程式開始執行時初始化一次,並在程式結束時銷毀等等。

一、static 請先看下面這段程式:publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello,world!");//(2)}}看過這段程序,對於大多數學過Java的從來說,都不陌生。即使沒有學過Java,而學過其它的高階語言,例如C,那你也應該能看懂這段程式碼的意思。它只是簡單的輸出“Hello,world”,一點別的用處都沒有,然而,它卻展示了static關鍵字的主

C語言中static關鍵字的實際應用場景及使用技巧一、概述static是C語言中的關鍵字,用來修飾變數與函數。它的作用是改變其在程式運行過程中的生命週期和可見性,使得變數和函數具有靜態的特性。本文將介紹static關鍵字的實際應用場景及使用技巧,並透過具體的程式碼範例進行說明。二、靜態變數延長變數的生命週期使用static關鍵字修飾局部變數可以將其生命週期

修飾符abstract(抽象的)一、abstract可以修飾類別(1)被abstract修飾的類別稱為抽象類別(2)語法:abstractclass類別名稱{}(3)特點:抽象類別不能單獨建立對象,但是可以聲明引用抽象類別類別名稱引用名稱;(4)抽象類別可以定義成員變數和成員方法(5)抽象類別有建構方法,用於建立子類別物件時,jvm預設建立一個父類別物件;抽象的建構方法應用在jvm建立父類別物件時應用。二、abstract可以修飾方法(1)被asbtract修飾的方法稱為抽象方法(2)語法:存取修飾符abstract回傳值

static的作用:1、變數;2、方法;3、類別;4、其他用途;5、多執行緒環境;6、效能最佳化;7、單例模式;8、常數;9、局部變數;10、記憶體佈局優化;11、避免重複初始化;12、在函數中使用。詳細介紹:1、變量,靜態變量,當一個變量被聲明為static時,它屬於類級別,而不是實例級別,這意味著無論創建多少個對象,都只有一個靜態變量存在,所有對像都共享這個靜態變數等等。

不,我們不能將頂級類別聲明為私有或受保護。它可以是公共或預設(無修飾符)。如果沒有修飾符,則應該具有預設存取權限。語法//Atoplevelclass publicclassTopLevelClassTest{ //Classbody}如果將一個頂級類別宣告為私有(private),編譯器將會報錯,提示「在此處不允許使用修飾符private」。這意味著頂級類別不能是私有的,同樣也適用於protected訪問
