我有一个简单的场景,其中有一个父类Person,它定义了一个名为“name”的属性,并包含一个“didSet”观察者
班级人员{
变量名称:字符串{
迪塞特{
println(“设置了人名”)
}
}
init(){}
}
我还有一个名为Employee的Person子类,它为“name”属性添加了自己的“didSet”观察器,以便它可以监视对该属性的更改
类员工:个人{
覆盖变量名:字符串{
迪塞特{
println(“已设置员工姓名”)
}
}
}
当我尝试运行代码时,我得到了编译错误,但我不知道为什么或者如何修复它。下面是练习这些类的代码
var person=person()
person.name=“鲍勃”
var employee=employee()
employee.name=“Sally”//导致“名称使用不明确”编译错误
在我的案例中,我可以通过对基类进行转换来解决这个问题:
(员工作为个人)。name=“Sally”
这似乎仍然对子类进行了适当的分派。例如:
班级人员{
变量名称:String{
返回“人”
}
}
员工类别:人{
重写变量名:String{
返回“员工”
}
}
让bob=Person()
让alice=Employee()
println((alice as Person.name)//打印“employee”