我来自 Java,现在我想在 Swift 中创建抽象类。
我有这门课Java,我想做同样的事情Swift如果可能的话
abstract class Fetcher
{
private Item[] items;
public void fetch()
{
//SOME CODE
parse();
//SOME CODE
}
public abstract void parse();
}
So,有没有办法在 Swift 中实现同样的目标,我不介意使用任何 hack,这是最后的希望
不幸的是,Swift 不支持抽象类和方法。
为了达到类似的效果,在 Swift 中我们使用协议(Java 中的接口)。
所以你的班级的一个例子是:
protocol Fetcher {
var items: [Item] { get set }
func fetch()
func parse()
}
您可以做的一件事是标记班级成员final
以防止它们在子类中被覆盖。
如果您想要其中一个功能的默认实现,您可以扩展您的协议:
extension Fetcher {
func fetch() {
//SOME CODE
parse()
//SOME CODE
}
}
您不需要在目标类中实现它。
例如,使用上面的协议:
class Foo: Fetcher {
var items = [Item]()
// No need for fetch method, since it's already implemented
func parse() {
// Do something
}
}
注意,上面的实现不包含该方法fetch
因为它已经在协议扩展中实现了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)