swift – public static vs open static vs public class vs open class?

随着 Swift 3中open关键字的引入,以下是一个方法的有效范围修饰符:open static,public static,open class,public class,但它们的区别究竟是什么?我知道public应该相当于Java中的public final,允许重写开放类方法和变量,但是公共类func或open static func是什么意思?它们是公共静态函数的同义词吗?即所有3个实现都不允许子类覆盖?在特定情况下,4种不同排列中的每一种都有独特的优势吗?
这个问题不必要地复杂,因为你比较两个变量(开放对公共和静态与类)的笛卡尔积的成员,而不是分别询问这两个变量.

这不是开放静态vs公共静态vs开放类vs公共类的问题,而是开放vs公共和静态vs类.它们是两个正交的维度.

公开对公众

上市:

在模块中,公共访问说明符允许访问和覆盖.

从模块外部,公共访问说明符允许访问,但不允许覆盖/子类.

打开:

在模块中,开放访问说明符允许访问和覆盖.

从模块外部,开放访问说明符允许访问,并允许覆盖/子类.

静态与类

静态的:

静态成员(方法或属性)是绑定到其定义的特定范围(类/结构/枚举)的成员.它的名称是这样的,因为始终静态调度对这些成员的访问.这相当于Java的静态.目标C与此无关.

类:

类成员是绑定到类或其子类的成员.类成员可以被子类覆盖.因此,它们在一般情况下是动态调度的,尽管在某些情况下优化器可以对类成员的访问进行虚拟化. Java与此无关.这相当于Objective C的class()方法.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...