搜尋

首頁  >  問答  >  主體

html - PHP類別為什麼要實例化?

今天學習到了MVC結構,發現程式碼中呼叫類別裡面的方法時都要先實例化類,最後在呼叫類別的方法

例如:

$xxxxx = new xxxxx();
$xxxxx->ccc('hello wolrd');

可是不是可以直接像下面這樣呼叫嗎?

xxxxx::ccc('hello wolrd');

為什麼一定要實例化?實例化能帶給我們什麼?與直接呼叫相比有什麼好處?求大神解惑

我想大声告诉你我想大声告诉你2743 天前807

全部回覆(8)我來回復

  • 迷茫

    迷茫2017-05-24 11:36:11

    ->,插入式解引用操作符(infix dereference operator),将对象的引用指向对象,例如对象->对象的方法。
    ::,作用域解析操作符(Scope Resolution operator),用于调用类的静态成员变量或是类之间的调用。
    详见博文。
    也是说 $xxxxx->ccc('hello wolrd'); 为调动类中的普通方法,要先实例化类的实例。
    xxxxx::ccc('hello wolrd') 為呼叫類別中的靜態方法,不需要實例化類別可直接呼叫。


    實例化類別之後能存取類別的方法與屬性。
    而靜態方法能獨立完成一個無狀態的操作。
    靜態方法和實例化方法的更多相關。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-24 11:36:11

    OOP程式設計思想,舉個例子來說

    $person=new Person();
    $person.username="godtoy";
    
    这种方式,每一个都是一个实例

    使用static的優點在於如果是工具類別就比較方便

    Utils::max(val1,val2);

    回覆
    0
  • 为情所困

    为情所困2017-05-24 11:36:11

    很可愛的樓主 提出的問題也很可愛 話說這種問題為什麼要去踩呢....

    很顯然就是,下面那種方法也是可以呼叫的,兩種都可以,只不過差別在於,下面一種只有類別的靜態成員函數可以這樣呼叫
    至於為什麼要實例化,估計是題主根本不懂得什麼是類別?
    我實在也不是謙虛,不能說出太多富有哲理詳盡的解釋,只能說

    類別是物件的抽象,物件是類別的實例,就好比人類是對所有人的抽象,例如人作死就會死,這是人(類別)的屬性,現在出生了一個小孩(實例化) ,那麼作死就會死,對這個小孩(對象)的有效

    之所以我們要去抽象的總結出人類的特徵,就是要讓我們能更好的學習如何去,比如你是一個醫生,就能更好的去醫治每一個個體(關鍵還是實例化後的對象),當然每個個體都還不太一樣,自己可以再去看看文件等更詳細的解答

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-24 11:36:11

    主要為了面向對象,可以透過一些參數實例化一個對象,你這是靜態調用,不存在對象

    回覆
    0
  • 高洛峰

    高洛峰2017-05-24 11:36:11

      
    實例化好比一台電視裡面有很多節目,此時你想看電視,你想看電視得打開電視,那麼你得打開電視上的開關按鈕,那就得需要new這個關鍵字去實例化這個對象,好讓我們能看到電視節目能操作電視機裡面的功能。

    與直接呼叫相比,實例化呼叫可以在類別裡面的方法提供存取權限存取修飾符:

    • public (公共的、預設)

    • protected (受保護的)

    • private (私有的)

    而直接呼叫就不需要實例換,使用起來方便而已。

    回覆
    0
  • 高洛峰

    高洛峰2017-05-24 11:36:11

    假設你定義了一個Car类,那么这个类是一个图纸,你不能拿一个图纸出去卖吧,所以你需要new生產出一輛車,才能賣,才能開。因為你可以參考這張圖紙,生產很多車啊。

    當然這個Car可能会有一些静态方法或者属性,这是你不需要生产汽车就可以使用的,比如你要看图纸,那就是Car的静态方法show

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-24 11:36:11

    如果使用靜態方法就不存在建構子這一說法了。

    回覆
    0
  • 迷茫

    迷茫2017-05-24 11:36:11

    你需要 單例模式

    回覆
    0
  • 取消回覆