ios – Swift – 混合抽象和具体方法

ios – Swift – 混合抽象和具体方法,第1张

概述Swift没有抽象的类和方法.相反,它提供协议. 当你的课程完全抽象或完全具体时,这很好. 但是,实现具有具体方法的抽象类的最佳“Swift”方法是什么? 伪代码示例: class Animal { abstract makeSound() abstract eyeCount()}class Mammal : Animal { override eyeCount { return 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!" }}

在哺乳动物中,我确实想要实施具体的方法eyeCount(),因为所有的哺乳动物都有2个硬编码的眼睛(据说是),我不想在狗和猫中重新实现它.但是,makeSound()只能用于Dog和Cat,因为哺乳动物的声音各不相同.

你会如何在Swift中实现它?谢谢!

解决方法 我会像这样实现它:
class AbstractAnimal{    // Fully abstract method    func methodThatReturnsSomething() -> String  {        fatalError("methodThatReturnsSomething() is abstract and must be overrIDen!");    }    func eyeCount() -> Int {        return 2;    }}

fatalError阻止Xcode抱怨抽象方法methodThatReturnsSomething()实际上没有返回任何东西.

总结

以上是内存溢出为你收集整理的ios – Swift – 混合抽象和具体方法全部内容,希望文章能够帮你解决ios – Swift – 混合抽象和具体方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1101558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存