1. 程式人生 > >php 靜態方法 靜態變數和繼承

php 靜態方法 靜態變數和繼承

程式碼

<?php
class A {
	public static $count = 1;


    public static function func() {
    	echo __METHOD__,' count: ',self::$count,PHP_EOL;
    }
}


class B extends A {
	public static $count = 2;
    
    // public static function func() {
    // 	echo __METHOD__,' count: ',self::$count,PHP_EOL;
    // }
}


B::func();
A::func();

結果
A::func count: 1
A::func count: 1

說明

從示例來看,php是允許覆寫靜態變數的,覆寫靜態方法也可以(去掉註釋)。只是在執行時,如果發現本類中沒有的方法,就會去父類中找,但是父類中用了self,self的變數就在方法所在的類中直接取,而不會回溯到呼叫方法的類中去找。

相關推薦

php 靜態方法 靜態變數繼承

程式碼 <?php class A { public static $count = 1; public static function func() { echo __METHOD__,' count: ',self::$count,PHP_

java機制:類的載入詳解(靜態類,靜態變數,靜態方法,靜態程式碼塊,構造程式碼塊,成員變數,成員方法,父類...)

       “程式碼編譯的結果從本地機器碼轉變為位元組碼,是儲存格式發展的一小步,卻是變成語言發展的一大步”,這句話出自《深入理解JAVA虛擬機器》 一.原始碼編譯      &n

普通方法, 類方法 classmethod 與 靜態方法staticmethod 使用區別.屬性函式property特性

普通方法, 類方法 classmethod  與 靜態方法staticmethod 使用和區別.屬性函式property特性 類方法: 使用時使用classmethod裝飾器裝飾的方法 優點: 簡潔的建立物件      

Java靜態方法,靜態變數,初始化順序

靜態方法的宣告和定義        定義一個靜態方法和定義一個例項方法,在形式上並沒有什麼區別,只是在宣告的頭部,需要加上一個關鍵字static。它的一般語法形式如下: [訪問許可權修飾符] static [返回值型別] 方法名([引數列表]){         語句序列 } 例如下面是一個靜態的方法: pu

python中類方法,例項方法靜態方法的作用區別

  Python中至少有三種比較常見的方法型別,即例項方法,類方法、靜態方法。它們是如何定義的呢?如何呼叫的呢?它們又有何區別和作用呢?且看下文。 首先,這三種方法都定義在類中。下面我先簡單說一下怎麼定義和呼

Java 中的 static 使用之靜態變數·靜態方法·靜態初始化塊

Java 中的 static 使用之靜態變數 大家都知道,我們可以基於一個類建立多個該類的物件,每個物件都擁有自己的成員,互相獨立。然而在某些時候,我們更希望該類所有的物件共享同一個成員。此時

深入java static關鍵字 淺析java類載入機制(解答java靜態方法變數無法訪問非靜態資料)

想要清晰理解java語法,不瞭解java和jvm的機制是不行的,以前不理解java中用static修飾方法和變數為什麼不可以訪問非靜態方法和資料,現在明瞭,如果你也有相同的困惑,這篇部落格足以解惑,原創不易,轉載請宣告出處。 本文分為3大部分 static

為什麼不能從靜態方法裡面呼叫非靜態方法,或變數?

    程式最終都將在記憶體中執行,變數只有在記憶體中佔有一席之地時才能被訪問。類的靜態成員(變數和方法)屬於類本身,在類載入的時候就會分配記憶體,可以通過類名直接去訪問;非靜態成員(變數和方法)屬於類的物件,所以只有在類的物件產生(建立類的例項)時才會分配記憶體,然後通過類

PHP面向對象 ——封裝繼承

com 過程 nds 使用 高度 例子 都是 png -- 面向對象的特征   1 封裝   2 繼承   3 多態 封裝   封裝就是把對象的屬性和行為結合成一個獨立的相同單位,並盡可能隱蔽對象的內部細節   優點:信息隱蔽,封裝即隱藏。   封裝的原則在軟件上的反映是:

PHP中的$_GET變數$_POST變數(二)

PHP中的$_GET變數和$_POST變數(二) $_POST變數 $_POST變數是一個數組,內容是由HTTP POST方法傳送的變數名和對應的值 $_POST變數用於收集來自method = "post"的表單中的值。從帶有POST方法

PHP中的$_GET變數$_POST變數(一)

PHP中的$_GET變數和$_POST變數(一) $_GET變數 $_GET變數用於收集來自method=“get"的表單中的值,其中這些值能夠很直觀地在瀏覽器的位址列裡看到,例如,我使用百度搜索“PHP”的時候,瀏覽器發起請求的url為https:

php中陣列與變數字串之間的轉換

 陣列函式_陣列與變數,字串之間的轉換:   1.list($var1,$val2...)   2.extract($arr, $flag)   3.compact(str1,str2...)   4.explode($delimiter, $str

php魔術方法: __get() __set()的妙用

<?php class Post { private $title; private $content; private $author; private $comments; private $_getters = array('title',

抽象方法抽象類 靜態靜態方法靜態成員

一 抽象類和抽象方法 用abstract修飾的方法稱為抽象方法 含有抽象方法的類必須定義為抽象類 使用場景: 為了描述抽象的概念,不予具體的事物相關聯 只是當做派生類的基類來使用 抽象的特徵: 抽象方法只做宣告,不能包含具體實現 抽象方法旨在被繼承之後使用,所以

php 普通方法靜態方法

普通 ntc 靜態 urn ade ati 標識符 count() student <?php header(‘Content-Type: text/html; charset=utf-8‘); class Student { public static funct

php中staticself調用靜態方法區別

php由於看到框架裏面經常使用static::method() 於是稍微了解下static和self的區別廢話少說,直接上代碼class Father { public function __construct() { $this->init(); self::test(); }

java繼承時能包括靜態的變量方法嗎?舉例說明!

end col set 繼承 clas mar ext 調用 static 子類繼承了超類定義的所有實例變量和方法包括靜態的變量和方法(馬克-to-win見下例),(視頻下載) (全部書籍)並且為它自己增添了獨特的元素。子類只能有一個超類。Java不支持多超類的繼承。 子

php面向對象中static靜態屬性靜態方法的調用

style 存放位置 需要 5.4 color UNC size 只有一個 面向對象 關於它們的調用(能不能調用,怎麽樣調用),需要弄明白了他們在內存中存放位置,這樣就非常容易理解了。靜態屬性、方法(包括靜態與非靜態)在內存中,只有一個位置(而非靜態屬性,有多少實例化對象,

php靜態方法靜態屬性的介紹

靜態屬性 size col 實例 生效 訪問類 都是 靜態 self 靜態分為兩個部分:靜態屬性和靜態方法 靜態的東西都是給類用的(包括類常量),非靜態的都是給對象用的 靜態屬性 在定義屬性的時候,使用關鍵字static修飾的屬性稱之為靜態屬性。 靜態方法 使用sta

靜態類中,靜態方法靜態變數的執行順序按出現執行

package com.study; public class StaticCode { static { i = 33;// i's value is from 0 to 33 g(); } static int i = 1;