“使用’propertyName’不明确”错误,因为didSet观察者重写了属性

我有一个简单的场景,其中有一个父类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”

发表评论