当前位置: 首页 > 知识库问答 >
问题:

你能解释一下Swift中静态和类的区别吗?[副本]

公冶鸣
2023-03-14

你能告诉我什么时候和为什么我应该使用关键字static以及什么时候我应该使用关键字class吗?(这是Swift中的类型属性语法)

共有1个答案

唐泳
2023-03-14

定义为静态函数的函数和定义为类函数的函数之间的区别在于,静态用于结构和枚举的函数,而主要用于协议和类的函数。

类函数也可以被子类重写。例如:

class Animal{
    class func generateAnimalSound(){
        print("Some Animal Sound")
    }
    static func isAnimal() -> Bool{
        return true
    }
}

class Cat: Animal{
    override class func generateAnimalSound(){
        print("Meow!")
    }
}

var someAnimal = Animal.generateAnimalSound()  // prints "Some Animal Sound"
var cat = Cat.generateAnimalSound()  // prints "Meow!"

但是,如果尝试重写静态成员函数IsAnimal(),这将导致错误:

Swift编程语言(Swift 3.1)-方法

 类似资料:
  • 本文向大家介绍请你讲一下动态链表和静态链表的区别相关面试题,主要包含被问及请你讲一下动态链表和静态链表的区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 静态链表是用类似于数组方法实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配地址空间大小。所以静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针。 动态链表是用内存申请函数(malloc/ne

  • 问题内容: 我想创建一个将保留所有实用程序方法的类,并将在整个应用程序中使用这些方法。 问题:1 创建一个单例类并在其中保留所有必需的方法是好事,还是应该创建一个所有函数都是静态的类? 问题:2 快速的上述两种方法之间的主要区别是什么? 问题:3 它会如何影响iOS的性能? 问题答案: 当然,这听起来令人困惑并且可以辩论。但是,从最佳实践中,我可以提出一些建议。 Singleton 通常用于创建资

  • 本文向大家介绍请你解释一下,内存中的栈(stack)、堆(heap) 和静态区(static area) 的用法。相关面试题,主要包含被问及请你解释一下,内存中的栈(stack)、堆(heap) 和静态区(static area) 的用法。时的应答技巧和注意事项,需要的朋友参考一下 考察点:堆栈   通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间

  • 本文向大家介绍请你来说一下静态函数和虚函数的区别?相关面试题,主要包含被问及请你来说一下静态函数和虚函数的区别?时的应答技巧和注意事项,需要的朋友参考一下 静态函数在编译的时候就已经确定运行时机,虚函数在运行的时候动态绑定。虚函数因为用了虚函数表机制,调用的时候会增加一次内存开销

  • 问题内容: 我可以在Swift库中看到这些定义: 定义为的成员函数与定义为的另一个成员函数有什么区别?仅仅是为了结构和枚举的静态功能,以及用于类和协议吗?还有其他应该知道的区别吗?在语法本身中具有这种区别的原理是什么? 问题答案: 是否仅将static用于结构和枚举的静态函数,将class用于类和协议? 那是主要区别。其他一些区别是类函数是动态调度的,并且可以被子类覆盖。 协议使用class关键字

  • 我可以在Swift库中看到这些定义: 定义为的成员函数和定义为的成员函数之间有什么区别?简单地说,是用于结构和枚举的静态函数,而是用于类和协议吗?还有什么其他的不同之处是你应该知道的吗?语法本身有这种区别的理由是什么?