“嗨,阿米戈。今天我將向您介紹一個典型的 Java 程序。大新聞是每個用 Java 編寫的程序都由類和對象組成。”

“我已經知道什麼是類。什麼是對象?”

“讓我們從一個類比開始。假設你想建造一艘小船。你進行設計,然後將藍圖發送到工廠,工廠將根據你的設計組裝一艘船。或者十幾艘船,或者盡可能多的船隨心所欲。我的意思是,根據一張藍圖可以製造出數十艘相同的船隻。”

“這正是它與 Java 一起工作的方式。”

Java 程序員就像設計工程師,只不過他們不是創建藍圖,而是編寫類。 船舶部件是根據藍圖製作的,而對像是根據類創建的。

“首先,我們編寫類(製作藍圖)。然後,當程序運行時,Java 機器根據這些類創建對象。這就像根據藍圖建造船隻的方式一樣。一個藍圖 – 許多船。船是不同的.它們有不同的名稱,承載不同的貨物。但它們仍然相似。它們都具有相同的設計,並且能夠執行相似的任務。”

“好的,我明白你的船類比喻了。你能再給我幾個例子來幫助我確定我明白你在說什麼嗎?”

“以蜜蜂為例……”

“不,從頭開始。我在蜜蜂方面有過糟糕的經歷。我們來處理螞蟻吧。”

“蟻群是物體如何相互作用的一個很好的例子。任何蟻群都由三類組成:蟻后、兵蟻和工蟻。每一類中的螞蟻數量各不相同。通常一個蟻群只有一個蟻后,幾十個兵蟻,以及數百名工人。三個班級,數百個物體。螞蟻在與自己班級的螞蟻和屬於其他班級的螞蟻互動時遵循嚴格的規則。”

“這是一個完美的例子。一個典型的程序就像那樣工作。有一個主要對像在所有類中創建對象。對象相互交互並與外部世界交互。對象的行為在內部是硬連線(編程)的”

“我不太明白。我是說,我一點也不明白。”

“這兩種解釋是同一枚硬幣的兩面。真相介於兩者之間。第一個例子(關於藍圖和船隻)向我們展示了類與其對象之間的聯繫。這是一個強有力的類比。蟻群類比證明了對象之間的關係,它們由類描述並且僅在程序運行時存在。”

“你的意思是我們需要為程序中使用的所有對象編寫類,然後描述它們的交互?”

“是的,但它比聽起來容易。在 Java 中,當程序運行時,所有實體都是對象。編寫程序相當於描述對象可以交互的各種方式。對像只是簡單地調用彼此的方法並傳遞所需的數據給他們。”

“有點模糊,但我想我差不多明白了。”

“我們如何知道調用哪些方法以及傳遞哪些數據?”

“每個類都有一個聲明,它表明它的用途。同樣,每個方法都有一個聲明,表明它可以做什麼以及我們需要傳遞給它什麼數據。要使用一個類,你需要對什麼有一個大致的了解它確實如此。你需要確切地知道每個方法的作用,但不是確切地知道它是如何做到的。它就像一根魔杖。”

“嗯!很好聽。”

“在這裡。看一下複製文件的類的代碼:”

將 c:\data.txt 複製到 c:\result.txt
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy
{
    public static void main(String[] args) throws IOException
    {
        FileInputStream fileInputStream = new FileInputStream("c:\data.txt");
        FileOutputStream fileOutputStream = new FileOutputStream("c:\result.txt");

        while (fileInputStream.available() > 0)
        {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
        }

        fileInputStream.close();
        fileOutputStream.close();
    }
}

“我不能說我明白了一切,但我想我明白了它的本質。”

“太好了,那我們下次見。”

“我差點忘了。這是迭戈給你的任務。”