快速思考受C#保护的访问器的正确方法是什么?

StackOverflower

在c#中,我们具有protected访问器,访问器使类成员在继承的clase上可见,但在其余部分不可见。

在Swift中不存在这种方法,所以我想知道对于这样的事情有什么正确的方法:

我想要一个变量(内部行为)和一个在基类上使用此变量的公共方法。此变量也将用于继承的clase。

我看到的选择

  • 忘掉基类,在我需要的任何地方实现变量和方法。错误,重复的代码
  • 通过组合实现继承。我将创建一个包含通用方法的类,它将由组成而不是继承使用。更少的错误,但仍然重复使用继承可以避免的代码
  • 实现继承并使变量在基类内部。WRONG因为没有任何理由就公开了事物,除了允许对继承的宗族可见。

基类的实现细节

我想要一个NSOperationQueue实例和一个公共方法来取消排队的操作。我从继承的类向此队列添加新操作。

罗布·纳皮尔

在Swift中,正确的答案几乎总是协议和扩展名。它几乎永远不会继承。有时,可可妨碍我们前进,因为可可中的类多于协议,但目标几乎总是协议和扩展。子类化是我们的最后选择。

您的特殊情况令人困惑,因为NSOperationQueue已经有取消队列操作的公共方法(cancelAllOperations)。如果要保护队列免受外部访问(例如防止调用者addOperation直接使用),则应将队列放入其他类型(即合成)中,然后将所需内容转发给队列。有关您要解决的特定问题的更多详细信息,将使我们能够帮助建议其他类似Swift的解决方案。

如果最后您需要看起来像protected或的东西,friend正确的解决方案是private将您的子类或朋友与目标放置在同一文件中,并标记私人物品private或者,将需要一起使用的东西放在框架中,并标记属性internal斯威夫特博客提供的,为什么这是有意选择一个很好的解释。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能从C#的子类访问受保护的方法?

来自分类Dev

在 C# 中,处理包含受保护嵌套类型的长模板类型名称的好方法是什么?

来自分类Dev

在C ++中进行受保护成员可访问性附加检查的原因是什么?

来自分类Dev

C ++:为什么不能在派生类中访问受保护的构造方法?

来自分类Dev

Java重客户端向受OpenAM保护的servlet进行身份验证的正确方法是什么?

来自分类Dev

Java中受保护的变量和方法的目的是什么

来自分类Dev

为什么触发 C# 事件的方法必须是受保护的虚拟方法?

来自分类Dev

为什么我可以在测试中访问受保护的方法?

来自分类Dev

为什么不能从子类访问受保护的方法?

来自分类Dev

C#方法签名-限制类型-正确的术语是什么?

来自分类Dev

受保护的静态方法访问

来自分类Dev

指令控制器内部访问控制器的正确方法是什么?

来自分类Dev

在C ++中将g_signal_connect()用于动态统一快速列表的正确方法是什么?

来自分类Dev

在C ++中将g_signal_connect()用于动态统一快速列表的正确方法是什么?

来自分类Dev

在Ember中从控制器访问模型的正确方法是什么

来自分类Dev

可通过反射类访问的公共,私有,受保护类的用途是什么?

来自分类Dev

c#不一致的可访问性阻止将私有类作为受保护方法的参数

来自分类Dev

C#无法从void main调用受保护的方法

来自分类Dev

在Bokeh(0.11)服务器应用程序中刷新/更新图的快速正确方法是什么?

来自分类Dev

在类(PHP)中访问私有/受保护变量的正确方法

来自分类Dev

如何访问设计受保护的方法?

来自分类Dev

从派生类访问受保护的方法

来自分类Dev

访问受保护成员的公共方法

来自分类Dev

用于快速搜索的数据结构是什么?(C#)

来自分类Dev

在C#中创建更改私有字段的方法的正确方法是什么?

来自分类Dev

从OAuth回调存储访问令牌的正确方法是什么

来自分类Dev

访问JBPM6过程变量的正确方法是什么

来自分类Dev

访问列表页面表单中的按钮的正确方法是什么?

来自分类Dev

根据其名称访问NumberSeq的正确方法是什么?

Related 相关文章

  1. 1

    为什么我不能从C#的子类访问受保护的方法?

  2. 2

    在 C# 中,处理包含受保护嵌套类型的长模板类型名称的好方法是什么?

  3. 3

    在C ++中进行受保护成员可访问性附加检查的原因是什么?

  4. 4

    C ++:为什么不能在派生类中访问受保护的构造方法?

  5. 5

    Java重客户端向受OpenAM保护的servlet进行身份验证的正确方法是什么?

  6. 6

    Java中受保护的变量和方法的目的是什么

  7. 7

    为什么触发 C# 事件的方法必须是受保护的虚拟方法?

  8. 8

    为什么我可以在测试中访问受保护的方法?

  9. 9

    为什么不能从子类访问受保护的方法?

  10. 10

    C#方法签名-限制类型-正确的术语是什么?

  11. 11

    受保护的静态方法访问

  12. 12

    指令控制器内部访问控制器的正确方法是什么?

  13. 13

    在C ++中将g_signal_connect()用于动态统一快速列表的正确方法是什么?

  14. 14

    在C ++中将g_signal_connect()用于动态统一快速列表的正确方法是什么?

  15. 15

    在Ember中从控制器访问模型的正确方法是什么

  16. 16

    可通过反射类访问的公共,私有,受保护类的用途是什么?

  17. 17

    c#不一致的可访问性阻止将私有类作为受保护方法的参数

  18. 18

    C#无法从void main调用受保护的方法

  19. 19

    在Bokeh(0.11)服务器应用程序中刷新/更新图的快速正确方法是什么?

  20. 20

    在类(PHP)中访问私有/受保护变量的正确方法

  21. 21

    如何访问设计受保护的方法?

  22. 22

    从派生类访问受保护的方法

  23. 23

    访问受保护成员的公共方法

  24. 24

    用于快速搜索的数据结构是什么?(C#)

  25. 25

    在C#中创建更改私有字段的方法的正确方法是什么?

  26. 26

    从OAuth回调存储访问令牌的正确方法是什么

  27. 27

    访问JBPM6过程变量的正确方法是什么

  28. 28

    访问列表页面表单中的按钮的正确方法是什么?

  29. 29

    根据其名称访问NumberSeq的正确方法是什么?

热门标签

归档