对象交互

Java 语法
第 2 级 , 课程 1
可用

“嗨,阿米戈。今天,我要给你介绍一个典型的 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();
    }
}

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

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

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

评论 (56)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
zzzz 级别 25,China,China
21 六月 2024
这段代码是用 Java 语言编写的一个简单程序,其主要目的是展示如何自定义一个方法(函数),并在主程序中调用这个方法多次。下面是对代码的逐行解读: 1. `package zh.codegym.task.task02.task0201;`:这一行指定了该源文件所在的包名,是 Java 组织类的一种方式。 2. 接下来的空行是为了代码的可读性,没有实际的编程意义。 3. `public class Solution { ... }`:这是定义了一个名为 `Solution` 的公共类(public class),在 Java 中,每个源文件只能有一个公有类,并且源文件的名字必须与这个公有类的名字相同。 4. `public static void main(String[] args) { ... }`:这是 Java 应用程序的入口点,JVM(Java 虚拟机)从这里开始执行程序。`main` 方法必须是 `static`(静态)的,这意味着它属于类本身而不是类的任何实例。`void` 表示此方法不返回任何值。`String[] args` 参数允许从命令行向程序传递参数,但在这个例子中并没有使用这些参数。 5-7. `print("...");`:这三行代码分别调用了自定义的 `print` 方法三次,每次传入一个不同的字符串作为参数。这些字符串将会被打印到控制台。 8-11. `public static void print(String s) { ... }`:这是自定义的 `print` 方法。它也是静态的(static),意味着可以通过类名直接调用,而不需要创建类的实例。该方法接收一个 `String` 类型的参数 `s`,方法体内通过 `System.out.println(s);` 四次打印这个字符串到控制台,每次打印后换行。 综上所述,这个程序的作用是打印三段不同的文字,每段文字重复打印四次,每次打印后换行。这是一种非常基础但实用的代码示例,展示了如何定义和调用方法,以及如何处理字符串输入。
Anonymous #11545106 级别 2,Shenzhen,China
25 七月 2024
人机
萧萧🥬🥒 级别 7,China,China
3 四月 2024
代码没看懂……😓
卫民 级别 2,China,China
22 一月 2024
所以我到此为止了嘛?
Henry Lee 级别 6,Tokyo,Japan
30 七月 2023
这个课程挺深入浅出的。换句话说就是如果完全0基础的朋友看这个文章可能有点吃力。
lmsm47 级别 16,Guangzhou,China
4 十月 2022
所以,对象指的就是类似java.io.FileInputStream的功能库。
C=null 级别 4
11 八月 2022
“状态”中的要求可能是英语翻译成汉语出错了,可以正常用“ System.out.println 或 System.out.print”。“print 方法应显示 4 次字符串。每次都在新的一行上显示。”由于代码是逐行编译,第一个类体中有三个输入,一个输入要显示4次字符串,就要有四次相同的值输出,第二个类体中,你就要创建四次输出,就会产生12行字符串(没学到循环,不要超前使用循环语句)。
Ocean 级别 22,China,Hong Kong
9 七月 2022
day3
Anonymous #11031217 级别 2,Hangzhou,China
5 七月 2022
结束了,又要回去看那个菜鸟编程了
myx 级别 22,China,China
27 五月 2022
public static void print(String s),里面的s 硬是没看懂怎么来的😅
刘宇奇 级别 22,China,China
21 六月 2022
s是传进方法的参数 写niubi都可以
夜未央 级别 2,China,China
3 二月 2022
呃,免费版到此结束了,再进行下去只能花钱了。
John Squirrels 级别 41,San Francisco,Poland
4 二月 2022
使用免费版本的话,您只能访问第0级和游戏部分。继续学习,您需要购买我们所提供的订阅之一。如果您完成0级任务后,收到足够暗物质数量,那么您将会解锁第1和第2级的讲课。但是,从第1级开始,您无法完成任务,除非您购买订阅。