靜態方法和非靜態方法的區別

2022-01-29 18:11:40 字數 1263 閱讀 4379

靜態方法static(類方法)和 非靜態方法(例項方法)的區別:

方法我們主要分為三種:

1.構造方法

2.非靜態方法(普通方法/例項方法)

3.靜態方法(類方法)

對於1(補充一下):構造方法分為無參構造方法 和 有參構造方法。另外

這兩個方法,涉及到了方法過載(小夥伴可以自己去了解方法過載、方法重寫、方法重構區別,當然我其他文章也會寫相關的介紹)。

一、靜態方法和非靜態方法的區別(呼叫物件、引用變數不同)

對於2:靜態方法,是使用static關鍵字修飾的方法,又叫類方法。屬於類的,不屬於物件,在例項化物件之前就可以通過類名.方法名呼叫靜態方法。(靜態屬性,靜態方法都是屬於類的,可以直接通過類名呼叫)。

a.在靜態方法中,可以呼叫靜態方法。

b.在靜態方法中,不能呼叫非靜態方法。

c.在靜態方法中,可以引用類變數(即,static修飾的變數)。

d.在靜態方法中,不能引用成員變數(即,沒有static修飾的變數)。

e.在靜態方法中,不能使用super和this關鍵字

對於3:非靜態方法,是不含有static關鍵字修飾的普通方法,又稱為例項方法,成員方法。屬於物件的,不屬於類的。(成員屬性,成員方法是屬於物件的,必須通過new關鍵字建立物件後,再通過物件呼叫)。

a.在普通方法中,可以呼叫普通方法。

b.在普通方法中,可以呼叫靜態方法

c.在普通方法中,可以引用類變數和成員變數

d.在普通方法中,可以使用super和this關鍵字

二、靜態方法和非靜態方法的區別(呼叫方法不同)

靜態方法可以直接呼叫,類名呼叫和物件呼叫。(類名.方法名 / 物件名.方法名)

但是非靜態方法只能通過物件呼叫。(物件名.方法名)

三、靜態方法和非靜態方法的區別(生命週期不同)

靜態方法的生命週期跟相應的類一樣長,靜態方法和靜態變數會隨著類的定義而被分配和裝載入記憶體中。一直到執行緒結束,靜態屬性和方法才會被銷毀。(也就是靜態方法屬於類)

非靜態方法的生命週期和類的例項化物件一樣長,只有當類例項化了乙個物件,非靜態方法才會被建立,而當這個物件被銷毀時,非靜態方法也馬上被銷毀。(也就是非靜態方法屬於物件)

總結:類方法可以直接通過類名呼叫,例項方法必需先例項化類,再初始化物件,然後通過類的例項物件才能呼叫

舉例:

class abc

public void testmethod()

public static void main(string str)

--- 借鑑於

靜態方法和非靜態方法的區別

靜態方法和非靜態方法的區別 1 靜態方法屬於類所有,類例項化前即可使用 2 非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員 3 因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體 4 static內部只能出現static變數和其他static方法 ...

靜態方法和非靜態方法的區別

靜態方法和非靜態方法的區別總結如下 1 靜態方法屬於類所有,類例項化前即可使用 2 非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員 3 因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體 4 static內部只能出現static變數和其他stati...

靜態方法與非靜態方法區別

c 靜態方法與非靜態方法的區別不僅僅是概念上的,那麼他們有什麼具體的區別呢?讓我們通過本文向你做一下解析。c 的類中可以包含兩種方法 c 靜態方法與非靜態方法。那麼他們的定義有什麼不同呢?他們在使用上會有什麼不同呢?讓我們來看看最直觀的差別 使用了static 修飾符的方法為靜態方法,反之則是非靜態...