鍍金池/ 問答/PHP/ 關于php面向對象繼承和靜態(tài)屬性保存公有屬性的問題

關于php面向對象繼承和靜態(tài)屬性保存公有屬性的問題

代碼1:使用靜態(tài)屬性
class NBAplayer {

    public static $president = "david stern";
}
$tao = new NBAplayer('tao');
$jun = new NBAplayer('jun');
echo NBAplayer::$president; // david stern

代碼2:使用繼承
class Human {

    public $name;
    public $president = 'david stern';
}
class NBAplayer extends Human {
    function __construct($name){
        $this ->name = $name;
    }
}
$tao = new NBAplayer('tao');
$jun = new NBAplayer('jun');
echo $tao ->president;
echo $jun ->president;

這兩種方法都能保存公有屬性,既然可以繼承父類的共同的數據,那為什么還要static靜態(tài)屬性呢?
我是剛學習面向對象,理解不是很清楚,請大神講講他們在公有數據這方面的區(qū)別。

回答
編輯回答
糖果果

明顯的區(qū)別:靜態(tài)屬性被多個實例共享,繼承(成員變量)是每個實例獨立的。

例如用$tao->president = "A"不會改變$jun->president。

2018年5月3日 18:35
編輯回答
悶騷型

靜態(tài)變量可以在類的內部使用,改變。但是不會影響繼承他的那個類

2018年9月19日 05:13