构造器、构造器重载和复制构造器是什么?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
构造器用于初始化新实例,没有返回类型,名字与类名相同。一个类可按不同参数列表声明多个构造器,这叫构造器重载。所谓复制构造器通常只是接收同类型对象的普通构造器;Java 不会自动生成 C++ 式的复制构造器,也不会替你决定复制深度。
讲清原理
构造器应让对象在交付给调用方时满足必要约束。多个入口可以通过 this 调用汇合,避免把校验逻辑复制多份。Java 21 的显式 this/super 构造器调用必须位于构造器体第一条语句,不能套用更新版本的扩展规则。
复制引用字段时,要判断是否允许共享。String 等不可变值常可共享,可变数组则可能需要复制;复制一个外层对象不代表整个对象图都已独立。
例子与易错点
class Name {
final String value;
Name() { this("未命名"); }
Name(String value) { this.value = value; }
Name(Name other) { this(other.value); }
}
Name a = new Name("小林");
Name b = new Name(a);
System.out.println(b.value + ":" + (a == b)); // 小林:false
这里两个 Name 实例不同,但共享同一个不可变字符串值。构造器不是普通方法,不能写 void,也不能被子类重写。
相关题:第 27 题、第 29 题、第 38 题、第 41 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。