问题标签 [public-members]

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 投票
2 回答
3355 浏览

typescript - Typescript 构造函数中的公共与私有

TypeScript 构造函数中的公共成员在类中是公共的,而私有成员是私有的,我对吗?

如果是这样,公共成员和属性之间的有效区别是什么?

假设不同之处在于属性可以更像 c# 属性(也就是说,可以有与其访问相关联的代码),为什么要公开一个字段,而没有使其成为属性所固有的保护?

0 投票
2 回答
1901 浏览

c++ - C++ 公共变量范围混淆

如果您在一个类中声明一个公共变量,那么您可以从任何也是该类成员的函数中修改该变量。

如果您在函数中声明变量,则其范围不会超出函数的范围。

那么公共类变量本质上是一个可以被类的任何成员访问和更改的全局变量吗?

如果是这样的话,全局变量和公共变量有什么区别?

0 投票
1 回答
324 浏览

c++ - 无法使用子类变量访问超类​​公共成员

因此,如果我有以下超级类:

还有一个继承 Super 的 Sub 类:

比,当我有一个 Sub 对象时,我无法联系到 Super 的成员,即使他们是公开的。

但是,如果它们是公开的,为什么?还是我做错了什么?

0 投票
1 回答
81 浏览

r - 如何在 R6Class 中以私有方法访问公共成员?

这是我的示例代码。我运行最后一个代码Person$GrowUP2()。但是,我得到了错误Error in Person$GrowUP2() : attempt to apply non-function

我不知道为什么这段代码没有运行。我想使用私有方法来修改公共成员。如何

0 投票
2 回答
3550 浏览

java - Freemarker:访问模板中没有getter的公共字段

我正在 Dropwizard 应用程序中设置视图,并遇到了 Freemarker 的一个奇怪问题。

按照此处的文档,我设置了一个非常简单的示例,如下所示

FooView.ftl

呈现时的预期输出ExampleFreemarkerView是显示Hello World.

实际发生的是 Freemarker 抛出一个异常,抱怨${foo.bar}- 特别bar是 - 是未定义的。

这似乎是因为bar是一个公共领域,没有吸气剂。当我向 中添加public String getBar() { return bar; }吸气剂时Foo,它可以工作。

我对这种情况感到有些惊讶 - 即 Freemarker 似乎需要 getter 并且不能与开箱即用的公共字段一起工作。我故意在我的模型对象上使用公共字段而不是 getter/setter,因此添加 getter 只是为了使 Freemarker 工作不是我会考虑的解决方案。

我搜索了很多并通读了 Freemarker 文档,但找不到任何方法在 Freemarker 中“打开”这种行为。可能吗?

只是为了感兴趣-我也尝试了上面的示例,完全相同,但是使用 Mustache 模板和公共字段可以正常工作(即{{foo.bar}}渲染Hello World没有问题)。这解决了眼前的问题,所以这个问题主要是出于好奇,或者我出于其他原因决定使用 Freemarker 而不是 Mustache。


根据评论进行编辑-我知道 Freemarker 这样做(坚持使用 getters 开箱即用)遵循 Java Beans 规范,但 Java 生态系统中的大多数库都支持公共领域 - Hibernate 和 Jackson 是突出的例子 - 在我个人看来它作为一个同样有效的标准,并且发现不支持它的库令人惊讶。

0 投票
3 回答
86 浏览

c++ - C++ | 派生类正在访问基类的私有成员,而不是它自己的私有成员

抱歉,如果这是一个明显的问题,但我已经四处搜索,但我仍然不清楚如何解决这个问题。这是我的代码:

这段代码的输出是:

如您所见,我希望“所有者”、“分类器”和“线圈编号”成为用户无法更改的私有成员。这些也因所讨论的班级而异。

问题:

问题是输出的最后两行。当派生类(ElecMagnet)继承返回这些成员的公共函数时,它返回基类的成员;不是它自己的。您可以看到这一点,因为它返回 PermMagnet 类的“分类器”和“线圈编号”。

有谁知道为什么派生类会这样?它不应该访问自己的私人成员而不是基地吗?

0 投票
1 回答
1015 浏览

c++ - 不能使用公共嵌套类作为私有方法参数

在以下代码中:

f_private()不能使用嵌套类Outer::Inner作为参数类型。但是在f_public().

有人可以向我解释这是基于什么规则,它有什么好处?

0 投票
1 回答
42 浏览

c# - 关于 WPF 中具有绑定的公共/私有成员的编码约定是什么?

我知道这是 stackoverflow 中一个备受争议的问题(例如在我应该使用公共变量还是私有变量?),但我一直能够找到合适的答案来解决我的疑问。

简而言之,OO 编码礼仪要求类的成员保持私有,或者使用 getter/setter 作为替代方法。

但是,除非绑定的类成员是公共的,否则 WPF 中的数据绑定不会成功。那么,这里最好的出路是什么?我应该接受宣布公众成员是一种丑陋但必要的妥协吗?