Avatar ·

Swift中关键字`open`的含义及其与`public`的区别

大家好!我最近开始学习Swift,对访问修饰符感到困惑。在文档中我了解了`public`、`internal`、`fileprivate`和`private`,但后来遇到了`open`。 我明白`public`使类或方法可以从其他模块访问。但为什么还需要`open`?难道`public`不是做同样的事吗? 举个例子:我创建了自己的框架,希望用户不仅可以使用我的类,还能继承它。如果我用`public`,类可见,但编译器不允许继承。如果用`open`,则允许继承。为什么会这样? 另外让我困惑的是,`open`只能应用于类和类成员。而对于结构体和协议,据我所知,不能使用`open`。这是真的吗? 还有一个问题:如果我编写的是普通应用程序(不是框架),是否需要使用`open`?还是`public`就足够了? 希望能得到带示例的详细解释,因为官方文档...