我有一个班级和一个班级。我想创建一个Admin
对象,它可以访问Admin和SecurityGuard方法。我不想创建第三个类(因为各种明显的原因,比如将来的更改很容易实现),有没有办法让一个对象使用来自两个不相关类的方法?
谢谢您。
最佳答案
使用两个协议并在一个类中实现它们。这里有一个简单的例子让你开始。
protocol Admin {
var isAdmin: Bool { get }
}
protocol SecurityGuard {
func protect()
}
class SecuritySupervisor: Admin, SecurityGuard {
var isAdmin = true
func protect() {
print("You're protected")
}
}
let securitySupervisor = SecuritySupervisor()
securitySupervisor.isAdmin // true
securitySupervisor.protect() // prints "You're protected"
还要记住,如果您希望在多个类中使用相同的实现,协议可以具有默认实现:
protocol Admin {
var isAdmin: Bool { get }
}
protocol SecurityGuard {
func protect()
}
extension SecurityGuard {
func protect() {
print("You're protected")
}
}
class SecuritySupervisor: Admin, SecurityGuard {
var isAdmin = true
}
class NormalGuard: SecurityGuard {}
let securitySupervisor = SecuritySupervisor()
securitySupervisor.isAdmin
// works like before
securitySupervisor.protect()
// same implementation
NormalGuard().protect()
关于swift - 2类对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35134336/