3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
這是海芋最近碰到的一個小問題,為什麼在同一個類別中,Static Method 不能存取 Non-Static Method 呢?於是海芋就想啊想的,加上翻了一下資料,終於恍然大悟,就把他寫下來,避免將來忘記。   就程式語言的變數、類別來說,分為 Static 和 Non-Static 分為兩種不同的型態,則 Java 大概可以分為四種資料成員,分別為「class field」、「class method」、「instance filed」、「instance method」,而這麼多的型態,我們該如何去分辨呢?   在Java中,你可以把 Static 看成是類別所擁有的,而且是一開始就放置於記憶體中的,而 Instance 則是伴隨著物件產生而產生的。 所以,如果我們有下列片段程式碼: public class CD { public static double PI = Math.PI; public double area = 0; public CD() { ......... } }     而這段程式碼之中,因為PI這個變數是宣告為 Static 的,所以他是屬於 CD 類別,因此若您要在別的類別存取他,只要使用「CD.PI」即可,其中「CD為類別名稱」、「PI則為變數名稱」。 再來,因為 area 不為 static 物件,因此您只能建立物件,再存取他,所以您如果要在別的類別存取他,只能這樣使用。 CD cd = new CD() double area = cd.area;     又倒底是什麼原因,讓 static method 只能存取 static method 呢?原因很簡單,因為在同一個類別之中,沒有建立自己的物件,既然沒有建立物件,那如何存取instance method呢?   在 instance method 中,則是可以存取到 static method,但是仍然要以「類別名稱.變數/method名稱」來存取,這點是相當重要的喔! 所以總結如下: 在同一個類別中,若有method宣告為static,則此method只能呼叫其它宣告為static的method。 在不同的類別中,若要呼叫其它class的static method/field,則使用下列程式碼:className.fieldName className.methodName 若要呼叫class method或是class filed,則需先建立物件,再使用下列程式碼:objectVariableName.fieldName objectVariableName.methodName 但是,在同一類別中,instance method和instance method間,可以互相呼叫。 文章打完也說完了,如果是您不是程式設計師,或許會看得霧殺殺!那就略過吧! ~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~!

本文由inote提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦