为什么在Swift中不常见使用私有属性/方法

fs_tigre

首先,让我告诉您,我刚刚开始使用Swift并没有真正看到其中编写过很多代码,但是我看到的所有教程都没有像其他一些语言那样使用private。理解斯威夫特有三种访问控制,PrivatePublicInternal,同Internal是默认值。

我有点困惑,尽管事实上我一般没有很多编程经验,但是我的理解是,在程序中,您将所有内容设为私有,而仅将要公开的属性和方法公开给其他人类。

从Apple Docs

除了提供各种级别的访问控制之外,Swift通过为典型场景提供默认访问级别来减少指定显式访问控制级别的需要。确实,如果您正在编写单一目标应用程序,则可能根本不需要指定显式的访问控制级别。

对我来说,通过将每个属性/方法都保留为默认值(Internal),基本上就可以访问其他类的值,对吗?

为什么在Swift / Cocoa中,您很少看到Private不希望程序其他部分具有访问权限的属性使用访问器?

有人能这么善良地解释概念访问器吗?为什么Swift是用这种方式设计的?如果我在上面的假设中做错了,甚至可以更好地纠正我,那么我在OOP中就不需要太多经验了通常,我对访问器的概念感到困惑。

谢谢

更新:今天(2016年1月7日),我观看了视频#3,应用Developing iOS 8 Apps with SwiftStanford大学在iTunes中提供的课程中的MVC应用,并且在24:15分钟内,Paul Hegarty谈到了访问控制,我强烈推荐它。

阿纳托利P

Swift中的访问控制也是令我惊讶的事情之一,因此您并不孤单。Swift使用的范式与我以前熟悉的C ++,Java和C#完全不同。

Swift的访问控制不是基于类,而是基于源文件和模块。这个想法是,如果您编写一个类,则默认情况下,您应该可以从同一源文件或模块中的另一个类访问其所有成员。如果其他人扩展了您的类,则他们的代码将位于不同的模块和源文件中,因此除非您授予他们访问权限,否则他们将无法访问您的基类成员。

如果考虑一下,访问控制的Swift范例与C ++ / Java一样有意义,只是有所不同。

有关这两种语言之间的差异以及其他差异,请参见http://www.swiftprogrammer.info/swift_vs_cpp.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ZF2中不常见的表单属性用法

来自分类Dev

Powershell剥离不常见的对象属性

来自分类Dev

列表中不常见的输出元素

来自分类Dev

在SQL中查找不常见的用户

来自分类Dev

C ++中不常见的FOR语句形式

来自分类Dev

使用forEach遍历对象(不常见)

来自分类Dev

使用不常见的 getter 方法名称序列化中的 Jackson 命名约定问题

来自分类Dev

为什么AND是常见Lisp中的宏

来自分类Dev

为什么Wordpress代码始终具有比较部分不常见的“布尔文字===一些动态表达式”的顺序?

来自分类Dev

从DateTime列表中查找常见的DateTime,如果不常见则查找最常见的

来自分类Dev

额外模块中不常见类型类的实例声明

来自分类Dev

从Counter中删除最不常见的元素

来自分类Dev

基于熊猫中列的不常见行

来自分类Dev

从Counter中删除最不常见的元素

来自分类Dev

'less' 程序源中不常见的函数定义

来自分类Dev

在Excel 2010中查找常见和不常见的值

来自分类Dev

为什么JavaScript在常见的浏览器中没有得到自己的线程?

来自分类Dev

常见的ForkJoinPool为什么不尝试使用所有内核?

来自分类常见问题

为什么甚至可以更改私有成员或使用反射在C#中运行私有方法?

来自分类Dev

当我们在方法类中拥有私有属性时,为什么要使用final作为修饰符

来自分类Dev

在Java中从两个不同的数组列表对象中找到不常见的通用所有元素

来自分类Dev

如果有日期字段,则使用日期字段合并表;如果不常见日期字段,则添加新行

来自分类Dev

如何仅使用OSX中的终端命令从两个文件中查找不常见的单词?

来自分类Dev

使用 PHP 比较两个数组并将不常见的字符串存储在新数组中

来自分类Dev

为什么我可以使用模板函数中的私有方法

来自分类Dev

为什么私有构造函数在case类中仍然可见?

来自分类Dev

为什么我不能使用私有抽象方法?

来自分类Dev

在Stanford iOS7教程中,为什么私有属性和方法(在实现文件中)也可以被子类继承

来自分类Dev

为什么Java编译器为包私有超类型中定义的公共方法添加可见性桥方法?

Related 相关文章

  1. 1

    ZF2中不常见的表单属性用法

  2. 2

    Powershell剥离不常见的对象属性

  3. 3

    列表中不常见的输出元素

  4. 4

    在SQL中查找不常见的用户

  5. 5

    C ++中不常见的FOR语句形式

  6. 6

    使用forEach遍历对象(不常见)

  7. 7

    使用不常见的 getter 方法名称序列化中的 Jackson 命名约定问题

  8. 8

    为什么AND是常见Lisp中的宏

  9. 9

    为什么Wordpress代码始终具有比较部分不常见的“布尔文字===一些动态表达式”的顺序?

  10. 10

    从DateTime列表中查找常见的DateTime,如果不常见则查找最常见的

  11. 11

    额外模块中不常见类型类的实例声明

  12. 12

    从Counter中删除最不常见的元素

  13. 13

    基于熊猫中列的不常见行

  14. 14

    从Counter中删除最不常见的元素

  15. 15

    'less' 程序源中不常见的函数定义

  16. 16

    在Excel 2010中查找常见和不常见的值

  17. 17

    为什么JavaScript在常见的浏览器中没有得到自己的线程?

  18. 18

    常见的ForkJoinPool为什么不尝试使用所有内核?

  19. 19

    为什么甚至可以更改私有成员或使用反射在C#中运行私有方法?

  20. 20

    当我们在方法类中拥有私有属性时,为什么要使用final作为修饰符

  21. 21

    在Java中从两个不同的数组列表对象中找到不常见的通用所有元素

  22. 22

    如果有日期字段,则使用日期字段合并表;如果不常见日期字段,则添加新行

  23. 23

    如何仅使用OSX中的终端命令从两个文件中查找不常见的单词?

  24. 24

    使用 PHP 比较两个数组并将不常见的字符串存储在新数组中

  25. 25

    为什么我可以使用模板函数中的私有方法

  26. 26

    为什么私有构造函数在case类中仍然可见?

  27. 27

    为什么我不能使用私有抽象方法?

  28. 28

    在Stanford iOS7教程中,为什么私有属性和方法(在实现文件中)也可以被子类继承

  29. 29

    为什么Java编译器为包私有超类型中定义的公共方法添加可见性桥方法?

热门标签

归档