2011-04-03 61 views
32

靜態是什麼意思?公共和靜態的區別?

我知道,它可以從類的外部訪問,並且公開的,只有從類

+6

公共方法和屬性只能訪問類實例化後,並通過被稱爲「 - >」符號。公共靜態方法和屬性可以在不需要實例化類的情況下被訪問,並且可以通過「::」來調用。 – arma 2011-04-03 02:14:27

回答

32

靜態意味着它可以在不實例化類訪問公共交通工具。這對常量很有用。

靜態方法需要對對象的狀態沒有影響。除參數外,它們還可以有局部變量。

13

內從http://php.net/manual/en/language.oop5.static.php

Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static can not be accessed with an instantiated class object (though a static method can).

18

public:公共聲明的項目可以隨處訪問。

受保護:受保護的限制訪問繼承和父類 類(以及定義項目的類)。

私人:私人限制僅限定義 該項目的類的可見性。

static:一個靜態變量只存在於本地函數範圍 中,但是當程序執行離開這個範圍時它不會丟失它的值。

final:Final關鍵字可以防止子類通過爲final定義前綴final操作而覆蓋 方法。如果班級本身是 被定義爲最終,那麼它不能被擴展。

瞬態:瞬態變量是一個變量,可能不是 被序列化。

易失性:可能會同時修改多個線程的變量 線程應聲明爲volatile。聲明爲易變的變量 不會被編譯器優化,因爲它們的值可隨時在 處更改。

1

一些例子...... 當使用static關鍵字,那麼我們就不能使用$這個..

class Foo{ 
    private $foo='private'; 
    private function priv_func(){ 
     echo 'priv_method'; 
     } 
    public static function ger(){ 
     echo $this->foo; 
     $this->priv_func(); 
     } 
    } 
//class Zero extends Foo{}; 
$obj=new Foo; 

$obj->ger(); 

Fatal error: Using $this when not in object context in

+0

您也可以使用'self'來訪問同一個類中的靜態方法和靜態變量。 'self :: priv_func();' – 2017-08-08 10:33:52

+0

我覺得如果這個例子有更多的解釋是真的幫助我,因爲在這個頁面上沒有任何其他的例子。不幸的是,我不太明白你想教我什麼。 – Eoin 2018-03-03 01:27:49