小弟我觉得好迷糊

WBOY
풀어 주다: 2016-06-13 10:34:37
원래의
948명이 탐색했습니다.

我觉得好迷糊啊

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>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿