“我要给你介绍一下对象初始化。创建对象时,你需要为其变量指定初始值,以免出现访问对象不包含正常运行所需信息的情况。”

“我们来考虑 File 对象。文件的最少必要信息是文件名。创建无名文件是很荒谬的。

“假设我们编写一个 MyFile 类来处理文件。每个对象的必要信息是什么?”

“与对象关联的文件的名称?”

“正确。为了执行此操作,我们向类中添加 initialize() 方法。它看起来是这样的。”

示例:
class MyFile
{
    private String filename = null;

    public void initialize(String name)
    {
        this.filename = name;
    }}

“我们添加了 initialize 方法,以便通过调用该方法来处理对象。我们可以在调用 initialize 方法之后立即调用对象的方法。如果无法处理对象,则称该对象无效;否则,则称该对象有效。initialize 方法的主要任务是接收使对象有效所需的所有数据。

“我明白了。”

“现在我们让任务变得更难一些。或者,转念一想,变得更容易一些。具体取决于你是如何看待它的。假设使用我们的类的程序员会发现,仅传递文件的目录和短名称而不是其完整路径会更方便。我们可以通过创建另一个 initialize 方法(Java 允许创建多个具有相同名称的方法)来允许程序员达到此目的。我们的类看起来如下所示:”

包含两个 initialize 方法的示例:
class MyFile
{
    private String filename = null;
    public void initialize(String name)
    {
        this.filename = name;
    }

    public void initialize(String folder, String name)
    {
        this.filename = folder + name;
    }}

“还要指出一点:我们经常需要在当前文件的旁边创建一个临时文件副本。”

“我们可以创建一个方法来完成此操作吗?”

“当然。请看。”

在当前文件旁边创建一个副本:
class MyFile
{
    private String filename = null;
    public void initialize(String name)
    {
        this.filename = name;
    }

    public void initialize(String folder, String name)
    {
        this.filename = folder + name;
    }

   // 文件名将与文件存储在同一目录中。
    public void initialize(MyFile file, String name)
    {
        this.filename = file.getFolder() + name;
    }}

“我可以根据需要创建任意数量的方法吗?”

“嗯,要在合理范围内。但从技术层面讲,是可以根据需要创建任意数量的方法的。”

“我在什么时候必须调用 initialize 方法?”

“创建对象后立即调用,以使对象生效。”

示例:
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\", "a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

MyFile file2 = new MyFile();
file2.initialize("a.txt");

String text = file2.readText();
2
任务
Java 语法,  第 5 级课程 6
已锁定
输入代码
有时你不需要思考,只需要敲击键盘把它打出来!尽管看似矛盾,但有时候你的手指会比你的意识有更好的“记忆力”。这就是为什么在秘密 CodeGym 中心进行培训时,有时会要求你完成一些输入代码的作业。通过输入代码,你将习惯这些语法,并获得一些暗物质。更重要的是,你会与懒惰作斗争!

“这个 getFolder() 方法是什么?”

“我们实际上并没有在此处显示代码。它表示一个返回字符串的方法,该字符串包含存储文件的文件夹的名称。”