iOS 類方法(靜態方法)和例項方法

2022-10-10 15:15:14 字數 2097 閱讀 7176

類方法  

例項方法是以+開頭的方法, 例項方法是用例項物件訪問;

類方法的物件是類而不是例項,通常用來建立物件或者工具類。

在例項方法裡,根據繼承原理傳送訊息給self和super其實都是傳送給self

在類方法裡面self是其他的類的類方法,在類方法中給self傳送訊息只能發給類方法self或者是類super 

什麼時候用類方法,要建立乙個例項時候獲取乙個共享例項,或者獲取關於類的一些共有資訊

1.例項方法/動態方法

a).識別符號:-

b).呼叫方式:(例項物件    函式)

c).例項方法在堆疊上。

2.靜態方法/類方法

a).識別符號:+

b).呼叫方式:(類    函式)

c).靜態方法在堆上分配記憶體。

3.靜態方法和例項方法的區分

a).靜態方法常駐記憶體,例項方法不是,所以靜態方法效率高但佔記憶體。事實上,方法都是一樣的,在載入時機和占用記憶體上,靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。

b).靜態方法在堆上分配記憶體,例項方法在堆疊上。事實上所有的方法都不可能在堆或者堆疊上分配記憶體,方法作為**是被載入到特殊的**記憶體區域,這個區域是不可寫的。

c).例項方法需要先建立例項才可以呼叫,比較麻煩,靜態方法不用,比較簡單。

d).靜態方法是靜態繫結到子類,不是被繼承。

e).一般使用頻繁的方法用靜態方法,用的少的方法用動態的。靜態的速度快,佔記憶體。動態的速度相對慢些,但呼叫完後,立即釋放類,可以節省記憶體,可以根據自己的需要選擇是用動態方法還是靜態方法。

f).靜態方法修改的是類的狀態,而物件修改的是各個物件的狀態。

g).類的例項呼叫是在類的生命週期中存在,當類沒有了以後,對應的例項也就沒有了,對應的方法也就沒有了。靜態類不然,只要你引用了那個靜態類的命名空間,它就會一直存在,直到我們推出系統。

注:下面的就是用的類方法,特點:首字母大寫,例項方法往往首字母小寫

類方法  

例項方法是以+開頭的方法, 例項方法是用例項物件訪問;

類方法的物件是類而不是例項,通常用來建立物件或者工具類。

在例項方法裡,根據繼承原理傳送訊息給self和super其實都是傳送給self

在類方法裡面self是其他的類的類方法,在類方法中給self傳送訊息只能發給類方法self或者是類super 

什麼時候用類方法,要建立乙個例項時候獲取乙個共享例項,或者獲取關於類的一些共有資訊

1.例項方法/動態方法

a).識別符號:-

b).呼叫方式:(例項物件    函式)

c).例項方法在堆疊上。

2.靜態方法/類方法

a).識別符號:+

b).呼叫方式:(類    函式)

c).靜態方法在堆上分配記憶體。

3.靜態方法和例項方法的區分

a).靜態方法常駐記憶體,例項方法不是,所以靜態方法效率高但佔記憶體。事實上,方法都是一樣的,在載入時機和占用記憶體上,靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。

b).靜態方法在堆上分配記憶體,例項方法在堆疊上。事實上所有的方法都不可能在堆或者堆疊上分配記憶體,方法作為**是被載入到特殊的**記憶體區域,這個區域是不可寫的。

c).例項方法需要先建立例項才可以呼叫,比較麻煩,靜態方法不用,比較簡單。

d).靜態方法是靜態繫結到子類,不是被繼承。

e).一般使用頻繁的方法用靜態方法,用的少的方法用動態的。靜態的速度快,佔記憶體。動態的速度相對慢些,但呼叫完後,立即釋放類,可以節省記憶體,可以根據自己的需要選擇是用動態方法還是靜態方法。

f).靜態方法修改的是類的狀態,而物件修改的是各個物件的狀態。

g).類的例項呼叫是在類的生命週期中存在,當類沒有了以後,對應的例項也就沒有了,對應的方法也就沒有了。靜態類不然,只要你引用了那個靜態類的命名空間,它就會一直存在,直到我們推出系統。

注:下面的就是用的類方法,特點:首字母大寫,例項方法往往首字母小寫

例項方法 靜態方法 類方法

首先新建乙個日期date類,屬性為年,月,日,tomorrow 是例項方法,這個最常見,比較簡單,例項方法的第乙個引數是例項物件self 當我們傳入的年月日是2018 6 4這樣的形式,我們就需要先進行字串處理,在這裡使用了元組的拆包 這是最基本的方式,但是這樣寫會有乙個問題,每次傳參都需要進行字串...

類方法,例項方法,靜態方法

python 中的三種方法,有三種類方法,例項方法,靜態方法,這三種方法都在類中,區別在於呼叫的方式不同。例項物件能的呼叫這三種方法,類只能呼叫類方法和靜態方法。class foo object def init self,name self.name name deford func self 定...

例項方法 類方法 靜態方法

示例方法 第乙個引數為self,必須例項化之後才能呼叫的方法 類方法 使用 classmethod進行裝飾,第乙個引數為cls,可以被類呼叫,也可以被例項呼叫。靜態方法 使用 staticmethod進行裝飾,沒有固定的引數,可以被類呼叫,也可以被例項呼叫,一般可以說跟類和例項沒有關係。classa...