有没有办法在Swift语言中创建一个抽象类,或者这是一个像Objective-C一样的限制?我想创建一个类似于Java定义为抽象类的抽象类.
是否有一种在Swift中制作"纯虚函数"的标准方法,即.一个必须被每个子类覆盖的,如果不是,会导致编译时错误?
Swift没有抽象的类和方法.相反,它提供协议.
当你的课程完全抽象或完全具体时,这很好.
但是,实现具有具体方法的抽象类的最佳'Swift'方法是什么?
伪代码示例:
class Animal {
abstract makeSound()
abstract eyeCount()
}
class Mammal : Animal {
override eyeCount { return 2 } // Let's assume all mammals have hard-coded 2 eyes...
class Cat : Mammal {
override makeSound { print "Meow!" }
}
class Dog : Mammal {
override makeSound { print "Woof!" }
}
Run Code Online (Sandbox Code Playgroud)
在哺乳动物中,我确实想要实施具体的方法,eyeCount()因为所有哺乳动物都有2个硬编码的眼睛(据说是),我不想在狗和猫中重新实施它.然而,makeSound()只应该为狗和猫实施,因为哺乳动物有不同的声音.
你会如何在Swift中实现它?谢谢!
假设下面的操场:
protocol MyProtocol
{
func MyFunc()
}
class MyBase : MyProtocol
{
func MyFunc()
{
}
}
class MyClass : MyBase, MyProtocol
{
}
Run Code Online (Sandbox Code Playgroud)
我期待这不能编译,并唠叨不实现我的协议.但与其他语言不同,如果协议符合基类,Swift似乎认为它很好.
如何让MyClass强制覆盖我的方法?
我正在使用Swift 1.1,tia.