问题标签 [access-specifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
16997 浏览

ruby - 有没有办法从 Ruby 中的实例调用私有类方法?

self.class.send :method, args...当然,除此之外。我想在类和实例级别都提供一个相当复杂的方法,而无需复制代码。


更新:

@Jonathan Branam:这是我的假设,但我想确保没有其他人找到解决方法。Ruby 中的可见性与 Java 中的可见性非常不同。您也很正确,private它不适用于类方法,尽管这将声明一个私有类方法:

0 投票
6 回答
380 浏览

c++ - 在 C++ 中,为什么语言不强制对类/结构的公共、私有和受保护成员进行分组?

仅允许逻辑分组吗?

0 投票
10 回答
91426 浏览

ruby - Ruby 中的私有模块方法

我有一个两部分的问题

最佳实践

  • 我有一个算法,它使用公共接口对数据结构执行一些操作
  • 它目前是一个具有许多静态方法的模块,除了一个公共接口方法外,都是私有的。
  • 有一个实例变量需要在所有方法之间共享。

这些是我可以看到的选项,哪个是最好的?:

  • 具有静态(ruby 中的“模块”)方法的模块
  • 具有静态方法的
  • 用于包含在数据结构中的Mixin模块
  • 重构修改该数据结构(非常小)的算法部分,并使其成为调用算法模块的静态方法的混合

技术部分

有什么方法可以制作私有 Module 方法吗?

private那里似乎没有任何效果,我仍然可以Thing.priv毫无问题地打电话。

0 投票
2 回答
2723 浏览

oop - 使用其对象(实例)访问类的私有成员变量

这是一个 VB.NET 代码片段

我认为我们不能使用对象访问私有成员,但也许 CLR 允许我们这样做。这意味着访问修饰符基于类型而不是该类型的实例。我还听说c ++也允许这样做..

任何猜测可能是什么原因?

编辑:

我认为 RoBorg 给出的 msdn 链接中的这一行解释了这种行为“声明私有元素的类型中的代码,包括包含类型中的代码,可以访问该元素”

0 投票
3 回答
12716 浏览

ruby - 从 Ruby 中的类方法调用私有实例方法

我可以创建一个可以被类方法调用的私有实例方法吗?

抱歉,如果这是一个非常基本的问题,但我无法通过谷歌搜索找到解决方案。

0 投票
12 回答
37687 浏览

java - Java中的接口:不能使实现的方法受保护或私有

我知道接口必须是公共的。但是,我不希望那样。

我希望我实现的方法只能从他们自己的包中访问,所以我希望我实现的方法受到保护。

问题是我无法保护接口或实现的方法。

什么是解决方法?是否有与此问题相关的设计模式?

从 Java 指南来看,抽象类也无法完成这项工作。

0 投票
16 回答
719542 浏览

c++ - 私有继承、公有继承和受保护继承之间的区别

C++public中的、privateprotected继承 有什么区别?

我在 SO 上发现的所有问题都涉及特定案例。

0 投票
5 回答
1467 浏览

ruby - Ruby 方法 instance_eval() 和 send() 不会否定私有可见性的好处吗?

查看上面与 Widget 类相关的示例(如下), send 和 instance_eval 方法违反了私有和受保护可见性提供的所有保护。如果是这样,为什么还要在 Ruby 中使用私有和受保护的访问,因为不能保证您的定义会被尊重?

0 投票
2 回答
2442 浏览

ruby - Ruby中的私有/受保护块?

Ruby 似乎没有像这样定义受保护/私有块的工具:

相比之下,这会很好

您可能会忘记在受保护的方法之后“公开”。

似乎可以使用元编程来实现这一点。有什么想法吗?

0 投票
8 回答
13313 浏览

c++ - 为什么虚函数是私有的?

我刚刚在一些代码中发现了这一点:

这有什么目的吗?

(我正在尝试将一些代码从 VS 移植到 G++,这引起了我的注意)