随着
Swift 3中open关键字的引入,以下是一个方法的有效范围修饰符:open static,public static,open class,public class,但它们的区别究竟是什么?我知道public应该相当于Java中的public final,允许重写开放类方法和变量,但是公共类func或open static func是什么意思?它们是公共静态函数的同义词吗?即所有3个实现都不允许子类覆盖?在特定情况下,4种不同排列中的每一种都有独特的优势吗?
这个问题不必要地复杂,因为你比较两个变量(开放对公共和静态与类)的笛卡尔积的成员,而不是分别询问这两个变量.
原文链接:https://www.f2er.com/swift/319354.html这不是开放静态vs公共静态vs开放类vs公共类的问题,而是开放vs公共和静态vs类.它们是两个正交的维度.
公开对公众
上市:
在模块中,公共访问说明符允许访问和覆盖.
从模块外部,公共访问说明符允许访问,但不允许覆盖/子类.
打开:
在模块中,开放访问说明符允许访问和覆盖.
从模块外部,开放访问说明符允许访问,并允许覆盖/子类.
静态与类
静态的:
静态成员(方法或属性)是绑定到其定义的特定范围(类/结构/枚举)的成员.它的名称是这样的,因为始终静态调度对这些成员的访问.这相当于Java的静态.目标C与此无关.
类:
类成员是绑定到类或其子类的成员.类成员可以被子类覆盖.因此,它们在一般情况下是动态调度的,尽管在某些情况下优化器可以对类成员的访问进行虚拟化. Java与此无关.这相当于Objective C的class()方法.