当前位置: 首页 > 面试题库 >

Swift是否具有访问修饰符?

陶山
2023-03-14
问题内容

在Objective-C实例数据可以是publicprotectedprivate。例如:

@interface Foo : NSObject
{
  @public
    int x;
  @protected:
    int y;
  @private:
    int z;
  }
-(int) apple;
-(int) pear;
-(int) banana;
@end

在Swift参考中,我还没有提到访问修饰符。是否有可能限制Swift中数据的可见性?


问题答案:

Swift 3.0.1开始 ,共有
4级访问权限

,从最高(最低限制)到最低(最高限制)进行描述。

1. openpublic

允许在定义模块(目标)之外使用实体。指定框架的公共html" target="_blank">接口时,通常使用openpublic访问。

但是, open 访问权限仅适用于类和类成员,它与public访问不同之处如下:

  • public 类和类成员只能在定义模块(目标)内进行子类化和重写。
  • open 可以在定义模块(目标)之内和之外对类和类成员进行子类化和重写。

    // First.framework – A.swift

    open class A {}

    // First.framework – B.swift

    public class B: A {} // ok

    // Second.framework – C.swift

    import First

    internal class C: A {} // ok

    // Second.framework – D.swift

    import First

    internal class D: B {} // error: B cannot be subclassed

2。 internal

使实体可以在定义模块(目标)中使用。internal在定义应用程序或框架的内部结构时,通常使用访问权限。

// First.framework – A.swift

internal struct A {}



// First.framework – B.swift

A() // ok



// Second.framework – C.swift

import First

A() // error: A is unavailable

3。 fileprivate

将实体的使用限制在其定义的源文件中。fileprivate当在整个文件中使用特定功能的实现细节时,通常使用访问权限来隐藏这些细节。

// First.framework – A.swift

internal struct A {

    fileprivate static let x: Int

}

A.x // ok



// First.framework – B.swift

A.x // error: x is not available

4。 private

将实体的使用限制在其随附的声明中。private当仅在单个声明中使用特定功能的实现细节时,通常使用访问权限来隐藏这些细节。

// First.framework – A.swift

internal struct A {

    private static let x: Int

    internal static func doSomethingWithX() {
        x // ok
    }

}

A.x // error: x is unavailable


 类似资料:
  • 问题内容: 我已经看到一些参考引用了Java中称为(两个词在一起)的访问修饰符: 我发现与此有关的页面之一在这里。我的学校课上也提到了这个访问修饰符(并说它存在)。但是,使用它会导致Java语言错误。 我尝试了变量和方法,我很确定它不存在,但是我想解释一下发生了什么。是否考虑过然后拒绝了?还是在新版本的Java中将其删除? 编辑:我不是在寻找有关关键字的信息。 问题答案: 删除访问修饰符 Java

  • 问题内容: 我刚刚升级到Xcode 6 beta 4,其中Swift编译器现在支持access修饰符。 这给我带来了一个问题,因为我的单元测试现在无法编译(由于类未公开)。 简单的解决方案当然是将所有经过测试的类公开,但这听起来像是骇客(我个人的喜好是即使在非公共类上也编写单元测试)。 在.NET和Java中,通常可以允许单元测试程序集级别(或Java / OSGi中的捆绑包级别)从单元测试程序集

  • 问题内容: 我阅读了Apple关于Swift 3中访问修饰符的参考。我也阅读了关于stackoverflow的内容,但是我没有得到询问者的答案。据我正确理解,有四个级别: 公开,公开 内部 文件私有 私人的 我创建了自己的方案,以了解所有这些修饰符之间的区别,并将其上传到此处。如您所见,“公共”和“内部”修饰符之间没有区别。但是,它们处于不同的级别。任何想法将不胜感激! 问题答案: 您的图表不正确

  • 主要内容:私有(Private)成员,实例,保护(Protected)成员,实例,公共(Public)成员,实例,作用域保护,实例Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。 如果没有指定访问修饰符,默认情况下,Scala 对象的访问级别都是 public。 Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。 私有(Private)成员 用 private 关键字修饰,带

  • 根据留档(http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)的第二个表,没有标识符的成员对子类不可见。 但是,当我运行下面的示例代码时,“1”(b的内容)被打印出来! 如果没有访问修饰符的成员不能从子类访问,那么为什么在本例中打印它 它应该抛出一个错误,就像在私有访问修饰符中一样,不是吗?

  • 本文向大家介绍VBA 访问修饰符,包括了VBA 访问修饰符的使用技巧和注意事项,需要的朋友参考一下 示例 该Dim语句应保留用于局部变量。在模块级别,首选显式访问修饰符: Private 对于私有字段,只能在声明它们的模块中访问。 Public 用于公共字段和全局变量,可以通过任何调用代码进行访问。 Friend 用于项目内公共变量,但其他引用VBA项目无法访问(与加载项相关) Global也可以