Java類、物件以及(靜態)方法的探討

ldk2023發表於2023-01-12

  大家好,這是我的第一篇部落格。在這裡我想跟大家分享一下Java最基礎的Class and Object,也就是我們熟說的類和物件,以及對Java方法的探討。

  初學時的我因為沒有對這裡面的每一行程式碼思考透徹,在學習Java中級時感到愈加困難,像是在搭建一棟地基不斷搖晃的大樓,越往上蓋,越是覺得自己輕浮。因此,我決定用相較初學時不同的眼界,回過頭來看最基礎的程式碼。也希望我的隨筆能幫助到你們,或是得到你們的不一樣的看法。

  完整程式碼請見下圖。首先,我用大樓來解釋一下類Class和物件Object之間的關係。

  如果物件Object是一棟大樓,那麼類Class就是大樓的建造圖紙。在圖紙裡面,我們需要寫上:大樓裡面的東西例如地板、玻璃等(variables變數),以及大樓的安全保障怎麼做(methods方法)。如以下程式碼所示。

  相信你們已經懂了大樓的圖紙應該怎麼去寫,接下來我將建立一個計算器類和一個(public)測試類。計算機類有三個變數:num1, num2, result, 同時還有一個方法void Perform()用以計算num1+num2;測試類中沒有定義新變數,但是它有一個主方法(我們將在後面詳細說這個主方法)

  在主方法中,我們將引用計算器類,建立一個新的object即cal。這裡我們需要用到關鍵字new(用以分配記憶體)和建構函式constructor:Calc cal; cal = new Calc();(建構函式也將在後面詳細講解)Calc cal;為引用,cal = new Calc();為建立新的object,也可以直接寫成Calc cal = new Calc();

  建立好新的物件之後,我們就可以引用Calc類中的變數:cal.num1, cal.num2, cal.result 以及方法:cal.Perform();如果我們宣告cal.num1=3;cal.num2=5;那麼經過cal.Perform()方法之後,cal.result = cal.num1+cal.num2 = 8,再經過

System.out.println輸出cal.result,在控制檯console得到結果8。

 

 

   相信你們已經大致瞭解瞭如何引用類並創造一個新的物件,並引用類中的變數和方法進行計算。不過我們還剩有兩個未解釋清楚的問題:主方法main()和建構函式constructor,我們將一一進行解釋。

  public static void main(String args[]){}是初學者包括我都很不解的一個函式形式。實際上,Java執行時首先會執行main()方法,就和c語言一樣。而main方法是由Java虛擬機器呼叫的,所以必須是public,虛擬機器呼叫的main()方法的時候,不需要產生任何物件,所以main()方法宣告為static,且不需要返回值,所以必須宣告為void。String[] args是main函式的形式引數,可以用來獲取命令列使用者輸入進去的引數。

  接下來我們解釋建構函式constructor。我們在主方法中的物件 cal 就是由Calc()建構函式建立的。實際上,無需我們進行定義,每一個類會自動生成與類同名的建構函式(方法)。一個類中能有多個建構函式。它們沒有函式型別,不返回任何值,且預設類中定義的變數為0。因此,如果我們不在主方法中宣告cal.num1=3;cal.num2=5,那麼輸出結果將會是0。如下圖:

 

 

   當然,我們還可以自行定義建構函式以改變變數的預設值,甚至是函式的引數。

  如下圖所示。我們取消了宣告cal.num1=3;cal.num2=5,而是在建構函式Calc()中直接將3,5分別賦值給num1, num2,在另外一個建構函式Calc(int number1,int number2)中將number1,number2分別賦值給num1, num2,而在主函式中,物件cal2的建構函式中的3,4將分別賦值給number1,number2。分別輸出cal1.result和cal2.result,得到的結果大家肯定也知道了。

 

 

 好了這就是這次部落格的全部內容,謝謝你們能夠看完。更詳細的關於main()函式的解釋可以看https://www.cnblogs.com/wannianma/archive/2011/04/03/wannianma.html

相關文章