“嗨,阿米戈。今天,我要给你介绍一个典型的 Java 语言程序。重大消息是,用 Java 语言编写的每个程序都由类和对象组成。”

“我已经知道什么是类。那么对象是什么呢?”

“让我们从一个比喻开始。假设你要造一艘小船。你首先进行设计,接着将蓝图发送给工厂,然后在工厂根据你的设计组装船只。可以是十几艘船,也可以是你所需要的任意数量的船。我的意思是,可以根据一副蓝图建造出数十艘相同的船只。”

“这正是 Java 的工作方式。”

Java 程序员就像设计工程师一样,只是他们不制作蓝图,而是编写类。船舶零件是根据蓝图制造的,而对象是基于类创建的。

“首先,我们编写类(制作蓝图)。然后,当程序运行时,Java 机器将基于这些类创建对象。就像根据蓝图建造船只一样。一幅蓝图 – 许多船只。这些船是不同的。它们具有不同的名称并运载不同的货物。但它们仍然是相似的。它们都具有相同的设计,并且能够执行相似的任务。”

“好的,我明白你关于船只的比喻了。你能再给出几个比喻,从而确保我能理解你的意思吗?”

“我们来拿蜜蜂作比喻...”

“不,忽略这个。关于蜜蜂我有过糟糕的经历。我们拿蚂蚁举例吧。”

“蚁群是对象交互的一个很好的例子。任何蚁群都由三类蚂蚁组成:蚁后、兵蚁和工蚁。每个类别中的蚂蚁数量各不相同。通常,一个蚁群只有一个蚁后、数十名兵蚁和数百名工蚁。三个类,数百个对象。蚂蚁在跟同类蚂蚁和其他类蚂蚁互动时,遵守严格的规则。”

“这是一个完美的例子。典型的程序就是这样工作的。有一个在所有类中创建对象的主对象。这些对象彼此交互,并与外部世界进行交互。对象的行为在内部进行了硬绑定(编程)。”

“我不太明白。我的意思是,我一点也不明白。”

“这两种解释相当于一枚硬币的两个面。真相介于两者之间。第一个例子(关于蓝图和船只)向我们展示了类及其对象之间的联系。这是一个很有说服力的比喻。蚁群比喻证明了对象之间的关系,这些对象通过类来描述,并且仅在程序运行时存在。”

“你的意思是,我们需要为程序中使用的所有对象编写类,然后描述它们之间的交互作用?”

“是的,但是这比听起来容易。在 Java 中,当程序运行时,所有实体都是对象。编写程序相当于描述对象可以交互的各种方式。对象只是调用彼此的方法并将所需数据传递给这些方法。”

“这有点模糊,但我觉得差不多明白了。”

“我们如何知道调用哪些方法以及传递哪些数据?”

“每个类都有一个声明,指出其预期用途。同样,每个方法也都有一个声明,指出它可以做什么以及我们需要传递给它什么数据。要使用类,你需要对它的用途有一个大致的了解。你需要知道每个方法的确切用途,但无需确切知道它的工作方式。这就像魔杖一样。”

“嗯!听起来不错。”

“看这里。来看看用于复制文件的类的代码:”

复制 c:\data.txt to 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();
    }
}

“我不能说我完全明白了,但我觉得我已经掌握了它的本质。”

“太好了。下次课再见。”

“我差点忘了。这是迭戈给你布置的任务。”