File tree Expand file tree Collapse file tree 1 file changed +4
-4
lines changed
swift-6.docc/LanguageGuide Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Original file line number Diff line number Diff line change 5
5
6
6
你可以通过定义* 构造器* 来实现这个构造过程,它就像是用来创建特定类型新实例的特殊方法。与Objective-C构造器不同,Swift构造器没有返回值,它们的主要作用是确保类型的新实例在首次使用前被正确构造。
7
7
8
- 类的实例可以通过实现* 析构器* 来执行它释放之前自定义的清理工作。想了解析构器的更多内容,请参见 < doc:析构过程 > .
8
+ 类的实例可以通过实现* 析构器* 来执行它释放之前自定义的清理工作。想了解析构器的更多内容,请参见 < doc:Deinitialization > .
9
9
10
10
## 存储属性的初始赋值
11
11
@@ -542,7 +542,7 @@ print(zeroByZero.width, zeroByZero.height)
542
542
构造器可以调用其他构造器来完成实例的部分构造过程。这个过程被称为* 构造器代理* ,它避免了在多个构造器中重复代码。
543
543
544
544
构造器代理的实现规则和形式在值类型和类类型中有所不同。值类型(结构体和枚举类型)不支持继承,所以构造器代理的过程相对简单,因为它们只能代理给自己的其它构造器。
545
- 然而,类不一样,它可以继承自其他类(请参考< doc:继承 > )。这意味着类有责任保证其所有继承的存储型属性在构造时也能正确的初始化。这些责任将在后续章节< doc:类的继承和构造过程 > 中介绍。
545
+ 然而,类不一样,它可以继承自其他类(请参考< doc:Inheritance > )。这意味着类有责任保证其所有继承的存储型属性在构造时也能正确的初始化。这些责任将在后续章节< doc:类的继承和构造过程 > 中介绍。
546
546
547
547
对于值类型,你可以使用 ` self.init ` 在自定义的构造器中引用相同值类型的构造器。并且,你只能在构造器内部调用 ` self.init ` 。
548
548
@@ -871,7 +871,7 @@ Swift 编译器将执行 4 种有效的安全检查,以确保两段式构造
871
871
```
872
872
-->
873
873
874
- 相反,如果你编写了一个和父类便利构造器相匹配的子类构造器,由于子类不能直接调用父类的便利构造器(每个规则都在上文< doc:类的构造器代理规则 > 有所描述)。
874
+ 相反,如果你编写了一个和父类便利构造器相匹配的子类构造器,由于子类不能直接调用父类的便利构造器(每个规则都在上文< doc:类类型的构造器代理 > 有所描述)。
875
875
因此,严格意义上来讲,你的子类并未对一个父类构造器提供重写。最后的结果就是,你在子类中“重写”一个父类便利构造器时,不需要加 ` override ` 修饰符。
876
876
877
877
<!--
@@ -1912,7 +1912,7 @@ class AutomaticallyNamedDocument: Document {
1912
1912
```
1913
1913
-->
1914
1914
1915
- ` AutomaticallyNamedDocument ` 用一个不可失败构造器 ` init? (name:) ` 重写了父类的可失败构造器。因为子类用另一种方式处理了空字符串的情况,所以不再需要一个可失败构造器,因此子类用一个不可失败构造器代替了父类的可失败构造器。
1915
+ ` AutomaticallyNamedDocument ` 用一个不可失败构造器 ` init(name:) ` 重写了父类的可失败构造器。因为子类用另一种方式处理了空字符串的情况,所以不再需要一个可失败构造器,因此子类用一个不可失败构造器代替了父类的可失败构造器。
1916
1916
1917
1917
你可以在子类的不可失败构造器中使用强制解包来调用父类的可失败构造器。比如,下面的 ` UntitledDocument ` 子类总是被命名为 ` "[Untitled]" ` 并且在初始化阶段使用父类的可失败构造器 ` init(name:) ` 。
1918
1918
You can’t perform that action at this time.
0 commit comments