亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

靜態方法與實例方法的區別

靜態方法與實例方法的區別

一只名叫tom的貓 2019-06-29 09:54:52
靜態方法與實例方法的區別我只是在閱讀課本上給我的課文,我不太清楚它在說什么。它基本上告訴我靜態方法或類方法包括“修飾符”關鍵字靜態。但我真的不知道那是什么意思?有誰能簡單地向我解釋一下什么是靜態方法還是類方法?另外,我能簡單地解釋一下哪些實例方法是什么嗎?這就是他們在教科書里給我的:靜態改性劑的存在或不存在具有重要的實際意義。一旦Java處理它所屬類的定義,就可以調用和執行公共類方法。實例方法的情況并非如此。在調用和執行公共實例方法之前,必須創建它所屬的類的實例。要使用公共類方法,只需使用這個類。另一方面,在使用公共實例方法之前,必須有類的實例。在另一個方法的定義中調用靜態方法的方式因這兩個方法是否屬于同一個類而不同。在上面的例子中,階乘和main都是MainClass類的方法。因此,Main定義中對階乘的調用僅僅引用了方法名“fac引流”。
查看完整描述

3 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

Java的基本范例是編寫類,并實例化這些類。實例化對象(類的實例)具有與它們關聯的屬性(成員變量),這些屬性影響它們的行為;當實例執行其方法時,它將引用這些變量。

但是,所有特定類型的對象都可能具有完全不依賴于成員變量的行為;這些方法最好是靜態的。如果是靜態的,則不需要類的實例來運行該方法。

您可以這樣做來執行靜態方法:

MyClass.staticMethod();//Simply refers to the class's static code

但是要執行非靜態方法,必須執行以下操作:

MyClass obj = new MyClass();//Create an instanceobj.nonstaticMethod();//Refer to the instance's class's code

在更深層次上,當編譯器將類放在一起時,它包含了幾個指向方法的指針。當這些方法被執行時,它會跟隨指針并在遠端執行代碼。如果類被實例化,則創建的對象包含指向“虛擬方法表”的指針,該指針指向繼承層次結構中要調用的特定類的方法。但是,如果該方法是靜態的,則不需要“虛擬方法表”:對該方法的所有調用都會在內存中完全相同的位置執行相同的代碼。因此,在高性能系統中,如果不依賴實例變量,最好使用靜態方法。


查看完整回答
反對 回復 2019-06-29
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

未聲明為靜態的方法和變量稱為實例方法和實例變量。要引用實例方法和變量,必須先實例化類,這意味著您應該先創建該類的對象。對于靜態類,不需要實例化類u可以使用(.)中的句號訪問帶有類名的方法和變量。

例如:

Person.staticMethod();           //accessing static method.

對于非靜態方法,必須實例化類。

Person person1 = new Person();   //instantiatingperson1.nonStaticMethod();       //accessing non-static method.


查看完整回答
反對 回復 2019-06-29
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

靜態方法,變量屬于整個類,而不僅僅是對象實例。一個靜態方法,變量與整個類相關聯,而不是與類的特定實例相關聯。每個對象將共享一個靜態方法、變量的公共副本。每個類只有一個副本,不管有多少對象是從它創建的。


查看完整回答
反對 回復 2019-06-29
  • 3 回答
  • 0 關注
  • 770 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號