靜態方法java
㈠ java中為什麼要有靜態方法 和非靜態方法之分
站在「面向對象」的角度,static,也就是你說的靜態,是為了保持共性,大傢伙都用一個,而非靜態就是為了保持個性,這個個性需要使用實例來完成。例如
class Dog{
private static String color;
public static String getColor(){
return color;
}
}
這時候,Dog的color就只有共性,都是某種顏色,你想現實中Dog的顏色可能會有多種,要更加符合現實的話,這個修飾color的static最好是去掉,方法也是如此。在java中方法有一個更好的取名——行為,欄位也叫——屬性。使用靜態方法更多的用的是共性,她不需要個性,就像工具類中的對外提供的方法(API)一樣都是靜態的,而我們的一般類,都是為了保持個性而使用非靜態方法的。C語言中的確不需要這么考慮。
㈡ java中的靜態方法有什麼作用
作用:
靜態屬於類內存必須配內存空間,空間直由靜態佔用內存管理器。由於靜態沒調用,靜態存儲空間收所都聲明靜態,佔用量內存空間系統變慢普通,象調用內存並直起配內存調用候,才其配存儲空間其沒調用,存儲空間內存管理;其收釋放沒用空間提高系統運行速率。
㈢ Java中的靜態方法有修飾符嗎,靜態方法屬於成員方法嗎
在Java中,靜態方法是用static修飾的,同時可以選擇加上public或protected或private訪問修飾符,如果不加也是默認具有包訪問性。 靜態方法是屬於類的靜態成員方法,通常是通過類來調用,通過類的實例也可以調用。
如:
class A
{
public static void f()
{
System.out.println("類A的靜態方法f");
}
}
則以下方法都可以調用靜態方法f:
1、通過類來調用
A.f();
2、通過類A的引用變數來調用
A obj;
obj.f();
㈣ Java中的靜態方法是什麼
靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。
靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。
我們之前一直寫的mian方法仔細看看,它就是一個靜態方法,靜態方法使用如下:
㈤ java中,什麼是靜態方法
首先靜態方法是用static來修飾的
靜態方法就是可以不通過生成類的實例直接來調用的
舉個簡單的例子:
class
A
{
public
static
void
a()
{
System.out.println("A被調用");
}
public
void
b()
{
System.out.println("B被調用");
}
}
假設你要調用方法a和方法b
如果調用方法a可以直接A.a();就可以了
不需要先
A
aa
=
new
A();aa.a();
但是調用b則必須A
aa
=
new
A();aa.b();
還有在繼承裡面要注意:
如果B繼承自A
而且B中和A中都包含相同的函數
如果是實例方法則是被B覆蓋掉的
如果是靜態方法則是被B隱藏掉的
這一點
在上溯機制中可能遇到
最後還有一點靜態方法調用的方法一定也要是靜態的
㈥ Java中靜態方法與非靜態方法的區別
靜態方法和實例方法的區別主要體現在兩個方面:
在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有後面這種方式。也就是說,調用靜態方法可以無需創建對象。
靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問實例成員變數和實例方法;實例方法則無此限制。
下面幾個例子展示了這一區別。
1、調用靜態方法示例。
//-----------文件名hasStaticMethod.java,程序編號1-----------------public class hasStaticMethod{//定義一個靜態方法public static void callMe(){System.out.println("This is a static method.");}}
下面這個程序使用兩種形式來調用靜態方法。
//-----------文件名invokeStaticMethod.java,2-----------------public class invokeStaticMethod{public static void main(String args[]){hasStaticMethod.callMe(); //不創建對象,直接調用靜態方法 hasStaticMethod oa = new hasStaticMethod(); //創建一個對象oa.callMe(); //利用對象來調用靜態方法}}
程序3.36兩次調用靜態方法,都是允許的,程序的輸出如下:
This is a static method.This is a static method.
允許不創建對象而調用靜態方法,是Java為了減少程序員調用某些常用方法時的麻煩,而允許程序員按照傳統的C語言中使用函數的方式來使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"來獲取隨機數。
2、靜態方法訪問成員變數示例。
//-----------文件名accessMember.java,程序編號3.37-----------------class accessMember{private static int sa; //定義一個靜態成員變數private int ia; //定義一個實例成員變數//下面定義一個靜態方法static void statMethod(){int i = 0; //正確,可以有自己的局部變數sa = 10; //正確,靜態方法可以使用靜態變數otherStat(); //正確,可以調用靜態方法ia = 20; //錯誤,不能使用實例變數insMethod(); //錯誤,不能調用實例方法}static void otherStat(){} //下面定義一個實例方法 void insMethod(){int i = 0; //正確,可以有自己的局部變數sa = 15; //正確,可以使用靜態變數ia = 30; //正確,可以使用實例變數statMethod(); //正確,可以調用靜態方法}}
本例其實可以概括成一句話:靜態方法只能訪問靜態成員,實例方法可以訪問靜態和實例成員。之所以不允許靜態方法訪問實例成員變數,是因為實例成員變數是屬於某個對象的,而靜態方法在執行時,並不一定存在對象。同樣,因為實例方法可以訪問實例成員變數,如果允許靜態方法調用實例方法,將間接地允許它使用實例成員變數,所以它也不能調用實例方法。基於同樣的道理,靜態方法中也不能使用關鍵字this。
main()方法是一個典型的靜態方法,它同樣遵循一般靜態方法的規則,所以它可以由系統在創建對象之前就調用。
㈦ java 靜態方法可以重載嗎重寫呢
可以被重載,不可以被重寫。
靜態方法是類在載入時就被載入到內存中的方法,在整個運行過程中保持不變,因而不能重寫。但非靜態方法是在對象實例化時才單獨申請內存空間,為每一個實例分配獨立的運行內存,因而可以重寫。
所謂靜態就是在運行時,虛擬機已經認定此方法屬於哪個類。 專業術語有嚴格的含義,用語要准確,重寫只能適用於實例方法。不能用於靜態方法,對於靜態方法,只能隱藏,重載,繼承。
(7)靜態方法java擴展閱讀:
如果子類中定義的靜態方法(類方法)與父類中靜態方法(類方法)具有相同的返回值類型、方法名、方法參數的類型和個數完全相同,則稱子類中的該方法「隱藏」了父類中的該方法。當子類創建的對象調用該隱藏方法時,默認調用的是子類中的方法。
方法重寫是要注意許可權的問題,子類中的許可權不能小於父類的許可權,當父類的許可權為private時,子類無法繼承。也就無法產生所謂的重寫。(修飾符高低:private < 默認修飾符 < public)
㈧ java中什麼是靜態方法
若類的方法前加了static關鍵字,則該方法稱為靜態方法,反之為實例方法。靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。但一般提倡通過類名來使用,因為靜態方法只要定義了類,不必建立類的實例就可使用。靜態方法只能調用靜態變數。
㈨ java里靜態方法在什麼情況下使用,好處是什
靜態方法也稱為類的方法,可以在不創建對象的情況下直接調用,
好處就是調用方便,而且其在內存中只有一份,無論多個線程調用該方法,都只有一個,所以間接上來說省了一部分內存開銷,但其實也有不好就是類在載入時就為其分配內存空間而且不會回收,也就是這部分內存一直被佔有。
㈩ java中靜態方法與非靜態方法的區別
在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有後面這種方式。也就是說,調用靜態方法可以無需創建對象。
靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問實例成員變數和實例方法;實例方法則無此限制。