15.6 同步练习
- 请描述两段式构造过程以及下列代码
B类的构造过程。
class A {var x: Intinit(x: Int) {self.x = x}}class B: A {var y: Intinit(x: Int, y: Int) {self.y = ysuper.init(x: x)self.x = self.generate()}func generate() -> Int {/* return some value */return 0}}
简述Swift在构造过程中的4种安全检查。
判断正误:一个属性重写了观察者后,就不能同时对getter和setter访问器重写。
判断正误:常量属性和只读计算属性都不能重写属性观察者。
判断正误:我们可以重写父类的实例方法和静态方法(或称为类方法)。
判断正误:
final关键字声明类、属性、方法和下标。final声明的类不能被继承,final声明的属性、方法和下标不能被重写。判断正误:
is操作符可以判断一个实例是否是某个类的类型。如果实例是目标类型结果返回true,否则为false。判断正误:使用
as操作符转换为子类类型,这种转换被称为向下转型。判断正误:
AnyObject可以表示任何类的实例,而Any可以表示任何类型。给定如下基类
A:
class A {var x: Intinit(x: Int) {self.x = x}}
则关于子类B的定义正确的是( )。
A.
class B: A {var y: Intinit(x: Int, y: Int) {self.y = ysuper.init(x: x)self.x = self.generate()}func generate() -> Int {/* return some value */return 0}}
B.
class B: A {var y: Intinit(x: Int, y: Int) {super.init(x: x)self.y = yself.x = self.generate()}func generate() -> Int {/* return some value */return 0}}
C.
class B: A {var y: Intinit(x: Int, y: Int) {self.y = ysuper.init(x: x)}}
D.
class B: A {var y: Intinit(x: Int, y: Int) {super.init(x: x)self.y = y}}
