问题标签 [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.
ruby - 单例模式、私有方法和单例模块
我正在与 Ruby 中的单例模式作斗争。
我知道单例实现了一个对象的单个实例,但我不太明白我们是否可以在没有单例模块的情况下复制它。
然后是私有方法的问题;现在我必须做这样的事情:
所以我的问题是:
- 以上是一个好的单例模式吗?
- 这会确保只有一个实例吗?
- 有没有办法使用单例模块拥有私有方法?
ruby-on-rails - 如何在 Ruby/Rails 中指定私有或受保护的属性?
如何在 Ruby/Rails 中指定私有或受保护的属性?
是不是所有的 DB 字段都是自动属性的,不需要在 Model 中定义?
有什么推荐的教程吗?
在 Rails 3.0.7 中工作。
java - 难以保留需要由不同包访问的方法的默认可见性
我正在开发MineSweeper。在那我有3个包裹。1.frontEnd 2.backEnd 3.mineSweeperControl。
mineSweeperControl包含一个实现 ActionListener的类 ActionSplicer 。在前端我有一个 JBUTTONS 数组和一个ActionSplicer对象数组,这样splicerobj[i][j] 监听按钮 [i][j]。(一对一对应)
backEnd包含一个对象数组,这样object[i][j] 具有 button[i][j] 的背景细节,例如 MineValue、isCellEmpty、isCellFlagged 等...
方法doBackgroundAction(i,j){..} 在类 BackEndManager中定义。在ActionSplicer的actionPerformed中,我调用doBackgroundAction(i,j)以便前景的任何变化也会影响背景。
我的问题在哪里?
doBackGroundAction (i,j)需要公开,因为它在不同的包中调用。
但我不希望任何方法公开,因为它可能会降低灵活性,然后任何人都可以更改属性的值。
我无法扩展 BackEndManager 类,因为我在前端创建了一组 ActionSplicer 对象。
因此,我需要一些关于声明 doBackGroundAction(i,j) 的指导。在某些不可避免的情况下将方法声明为公共是否是正确的方法?或者如何更改我的设计以保留具有默认可见性的方法。
java - 如何从其他包中的类访问包私有类?
我有以下课程
你好.java
你好.java
CustomMap.java
这工作正常,直到我public
从中删除访问说明符CustomMap
编译器大喊
speak.hi.CustomMap 类型不可见
现在,如果我没有修改选项speak.hi.CustomMap
(第三方 jar 等)。有什么方法我仍然可以使用CustomMap
fromspeak.hello.Hello
吗?
我知道的一种选择是移动speak.hello.Hello
到speak.hi.Hello
Now Hello 在包中speak.hi
它可以访问包私有类Hi
有没有其他方法可以做到这一点?也许使用反射?
编辑:根据@StephenC 的要求更新了其他详细信息
ruby - Ruby 中的私有方法和受保护方法
以下代码有效:
然而,将对 method_b 的调用更改为self.method_b
不起作用:
我得到一个NoMethodError
. 我的印象是self
在实例方法中只解析为类的实例。为什么会self.method_b
导致问题?
注意:更改为self.method_b
时有效。private
protected
注意:如果将上述方法更改为类方法self.method_b
,则从 method_a 调用不会抛出NoMethodError
.
ruby - 顶级方法:为什么它们成为 Object 中的私有实例方法?为什么不公开?
在 Object 的 Ruby 私有实例方法中创建顶级方法的原因是什么?如果他们以某种方式被公开,这将如何改变事情?
ruby - Ruby - 私有方法的内联声明
目前正在编写一个类,其中我正在考虑将其设为私有的方法分布在整个代码中。我不想在其下方添加private
一行并复制粘贴所有内容,而是想在类的顶部进行内联声明,例如private :foo, :bar
.
但是,每当我尝试将带有参数的方法声明为私有内联时,都会收到一条错误消息。例如,如果我有一个方法foo(bar, baz)
,并尝试将其声明为私有,private :foo(bar, baz)
我会在两个括号中收到错误消息,期望kEND
和=
代替。
如果我尝试用 声明它private :foo
,我会被告知我的代码中没有这样的方法foo
。
如何在不出现这些错误的情况下做我想做的事情?
c++ - C++ 多重继承、基类可见性和可怕的钻石。将祖先基类重新公开为公共?
我需要通过保护基类从基类中抽象出许多接口,但我还需要对一个简单的祖先类进行公共访问Object
。我是否可以在没有对这些祖先的写入/编辑访问权限的情况下协商可怕的钻石Object
,并且仍然只提供一个基本 API,但再次公开 's API?
ruby-on-rails - 我们什么时候应该考虑使用私有或受保护?
只是想知道,我们什么时候应该真正使用private
或protected
用于模型中的某些方法?
有时我会不厌其烦地将我的方法分组到private
nor中protected
。我只是保持原样。但我知道这一定是一个不好的做法,否则这两个分组将不会在编程中创建。
谢谢。
ruby - Ruby 类初始化(构造函数)是私有方法还是公共方法?
ruby 中的初始化方法(构造函数)是私有的还是公共的?