zoukankan      html  css  js  c++  java
  • php类的static静态属性和静态方法的调用

    测试代码:

    <?php
    class Human{
        static public $name = "小妹";
        public $height = 180;
        static public function tell(){
            echo self::$name;//静态方法调用静态属性,使用self关键词
            //echo $this->height;//错。静态方法不能调用非静态属性,因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象
        }
        public function say(){
            echo self::$name . "我说话了";
            //普通方法调用静态属性,同样使用self关键词
            echo $this->height;
        }
    }
    $p1 = new Human();
    $p1->say();
    $p1->tell();//对象可以访问静态方法
    echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name,因为静态属性的内存位置不在对象里
    Human::say();//错。say()方法有$this时出错;没有$this时能出结果

    结论:
    (1)、静态属性不需要实例化即可调用。因为静态属性存放的位置是在类里,调用方法为"类名::属性名";
    (2)、静态方法不需要实例化即可调用。同上
    (3)、静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里;
    (4)、静态方法可以调用非静态方法,使用 self 关键词。php里,一个方法被self:: 后,它就自动转变为静态方法;
  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/10268701.html
Copyright © 2011-2022 走看看