15.6 同步练习
- 请描述两段式构造过程以及下列代码
B
类的构造过程。
class A {
var x: Int
init(x: Int) {
self.x = x
}
}
class B: A {
var y: Int
init(x: Int, y: Int) {
self.y = y
super.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: Int
init(x: Int) {
self.x = x
}
}
则关于子类B
的定义正确的是( )。
A.
class B: A {
var y: Int
init(x: Int, y: Int) {
self.y = y
super.init(x: x)
self.x = self.generate()
}
func generate() -> Int {
/* return some value */
return 0
}
}
B.
class B: A {
var y: Int
init(x: Int, y: Int) {
super.init(x: x)
self.y = y
self.x = self.generate()
}
func generate() -> Int {
/* return some value */
return 0
}
}
C.
class B: A {
var y: Int
init(x: Int, y: Int) {
self.y = y
super.init(x: x)
}
}
D.
class B: A {
var y: Int
init(x: Int, y: Int) {
super.init(x: x)
self.y = y
}
}