构造方法

Java 语法
第 5 级 , 课程 8
可用

“现在我来介绍构造方法。这是一个非常简单的概念。程序员发明了一种创建和初始化对象的简略方法。

没有构造方法 有构造方法
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");
String text = file.readText();
MyFile file = new MyFile("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("c:\data\", "a.txt");
String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

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


MyFile file2 = new MyFile(file, "a.txt");
String text = file2.readText();

“我刚刚学完 initialize 方法…”

“看起来比较难。使用构造方法,代码将更加方便和紧凑。”

“确实如此。我有一个问题。我知道如何在类中编写 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;
  }

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

…
}
class MyFile
{
  private String filename = null;

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

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

  public MyFile(MyFile file, String name)
  {
    this.filename = file.getFolder() + name;
  }

…
}

“在类中声明构造方法很容易。构造方法类似于 initialize 方法,只是有两点不同:

1.构造方法的名称与类名相同(而不是 initialize)。

2.构造方法没有类型(不指定类型)。”

“好的,它像 initialize,但是有一些区别。我想我明白了。”

评论 (16)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
得渡人稀 级别 11,Banqiao,China
5 八月 2024
白学
黄z聰 级别 18,Tokyo,China
6 十一月 2023
initialize 和成员方法有区别?
Solitude 级别 7,Wuhan,China
1 八月 2022
构造方法好像更方便,好像不能返回类型
Bob 级别 20,伯明翰,美国
29 六月 2022
IDEA里alt+insert可以直接生成构造函数
后来 级别 6,Wuhan,China
31 十月 2021
构造方法有返回值了?
kkk zckk 级别 7,Hong Kong
12 六月 2021
有什么更简便?不是把initialize方法的名字改成了类名?有什么区别吗
Anonymous #10795181 级别 11,Hefei,China
25 八月 2021
调用更简便了
诸葛靓 级别 11,China
7 五月 2021
辛辛苦苦敲了一个小时initialize,结果没啥用。。。
nullptr_y 级别 7,China,China
30 三月 2022
initialize函数可以设定返回值
liubo 级别 10,Hong Kong
21 三月 2021
我刚刚学完initialize 方法。。。。
Anonymous #11022089 级别 7,Hefei,China
11 九月 2022
俺也一样!
千翼 级别 6,Warrington,United Kingdom
15 八月 2020
是不是也叫:构造函数
婉昭 苍 级别 17,China
22 一月 2021
due
云梦 级别 6,不在列表中,China
23 二月 2021
也叫 构造器
alittleblank 级别 9,Hefei,China
19 六月 2020
I think i still have problems in understanding construct methods.