问题标签 [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 投票
1 回答
189 浏览

c++ - 细粒度访问说明符 c++

我有以下课程:-

现在,我希望 f() 只能从特定的类集(比如 B、C、D 类)访问,而 g() 可以从特定的其他类集(比如 D、E、F 类)访问。有没有办法在 C++ 中指定这个?如果我让所有班级成为 A 的朋友,那么 f 和 g 都可以从 B、C、D、E、F(以及 A 的其他私有成员)访问,这不是我想要的。

这是可能的还是我应该改变我的对象模型?

0 投票
3 回答
3829 浏览

java - c++ like protected in java

可能重复:
如何使数据成员只能被类和子类访问

在java中,
可以从类、它的子类和同一个包中存在的所有类中访问受保护的成员,
但我希望一个成员只能从类及其子类中访问(就像c++中的受保护成员一样)。

例如::

在这里,即使 B 不是 A 的子类,B 也可以访问 A 的 fun()。

如何使所有不是 A 的子类的类都无法访问 A?

编辑:: 我想在 java 中实现这一点。

0 投票
2 回答
16042 浏览

java - 带有接口的“不能降低继承方法的可见性”的含义

我有两个文件:

我认为代码看起来没问题,但我在第二个文件中遇到错误,void print(PrintDetails details) {其中指出:

无法降低从 继承的方法的可见性PrintService

有人可以解释这对我意味着什么吗?

0 投票
6 回答
7853 浏览

java - 为什么访问说明符不能用于 Java 类的方法内部声明的变量?

为什么我们不能对 Java 类的方法内声明的变量使用访问说明符?

0 投票
2 回答
381 浏览

java - 受保护的访问类型

可能重复:
在 Java 中,公共、默认、受保护和私有之间有什么区别?

为什么一个包中的子类不能通过超类的引用访问它的超类(在另一个包中)的受保护成员?我正在努力解决这一点。请帮我

0 投票
1 回答
369 浏览

c++ - 为什么在显式实例化中不恰当地访问 private 是合法的?

为什么这会被允许:

上述 C++ 滥用归功于 Johannes Schaub 。(演示

还有其他情况可以访问您应该不可见的内容吗?这只是标准中的“错误”吗?

0 投票
2 回答
923 浏览

c# - 关于 Java 和 C# 中的访问说明符的混淆

我在比较 Java 和 C# 中的访问修饰符。我想protected internal在 Java 中找到 C# 的替代方案。但我注意到protected修饰符在两种语言(C#Java)中是不同的。protected在 Java 中等同于protected internalC#,因为该成员也可以在同一个包中访问。

我有两个问题

  • 为什么他们在 Java 和 C# 中为相同的修饰符创建了不同的含义?
  • 我如何在 Java 中拥有protectedC#(访问仅限于包含类或从包含类派生的类型。 )?
0 投票
3 回答
10354 浏览

c++ - 为什么 == 重载可以访问参数的私有成员

可能重复:
为什么类实例可以更改 obj 的私有值?

考虑以下(部分)代码:

代码编译并且结果似乎正确。但是,在if运算符重载实现的部分,我们直接访问了它的参数的私有成员 - const Group& g,但是这样的访问不是无效的吗?

0 投票
2 回答
3893 浏览

c# - 为什么接口成员不能是非公开的?

可能重复:
C# 接口的非公共成员

假设我有

我明白了:

不实现接口成员;无法实现接口成员,因为它不是公共的;

我知道解决方法是什么,但我想知道为什么 C# 不让接口成员私有。

很多时候,我希望我的课程遵循一种模式,但不必将成员公开,比如在我编写库时。最重要的是,接口本身不是公开的:X

注意:我不是在问如何实现私有接口成员,但我知道这个决定背后的设计逻辑。我找不到合适的副本。

更新:比原始线程更多,这个来自另一个线程答案的代码示例比大多数描述答案更好地解释了它。甚至更好,来自@JonSkeet

0 投票
3 回答
37827 浏览

c# - 可访问性不一致:基类比类更难访问

所以我在 DLL 中有一个抽象基类和该类的子类。我希望孩子是公开的,但基础是私有的,这样就不能在 dll 之外访问它。

我怎么做?