问题标签 [access-modifiers]

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 投票
4 回答
3496 浏览

java - 可以从Java中的main访问类中的私有变量吗?

我最近开始使用JDK1.6 学习Java。如果这是一个愚蠢的问题,请原谅我。

如果私有变量可以由 main() 中的对象直接访问,它们如何“私有”?

这给出了输出:

0 投票
9 回答
67290 浏览

java - 访问说明符和访问修饰符有什么区别?

在Java中,访问说明符访问修饰符是一回事吗?

0 投票
6 回答
836 浏览

java - 帮助理解受保护方法的问题

我正在阅读2005 年 4 月的 Sybex Complete Java 2 Certification Study Guide (ISBN0782144195)。本书适用于希望通过 java 认证的 java 开发人员。

在关于访问修饰符(以及其他修饰符)的一章之后,我发现了以下问题(#17):

对或错:如果类 Y 扩展类 X,两个类在不同的包中,并且类 X 有一个名为 abby() 的受保护方法,那么 Y 的任何实例都可以调用 Y 的任何其他实例的 abby() 方法。

这个问题让我有点困惑。

据我所知,您可以在同一类(或子类)的任何变量上调用受保护的方法。您不能在层次结构中比您更高的变量上调用它(例如,您实现的接口)。

例如,您不能仅仅因为您继承它而克隆任何对象。

但是这些问题没有提到变量类型,只提到了实例类型。

我有点困惑,回答“是”。

书中的答案是

错误的。从不同包中的超类继承受保护方法的对象可以在其自身上调用该方法,但不能在同一类的其他实例上调用。

这里没有关于变量类型的内容,只有实例类型。

这很奇怪,我不明白。

谁能解释这里发生了什么?

0 投票
2 回答
2127 浏览

c# - 序列化使用内部修饰符声明的类的列表<>?

我正在尝试将 XML 序列化添加到 C# 中一个相当简单的类结构中。本质上,有一个根类的单个实例(称为 AClass),它包含一些其他类的几个实例的列表(称为另一个类):

序列化时,我希望将这两个类一起序列化——也就是说,如果我序列化 AClass,它的 AnotherClass 列表也会被序列化(参见这个问题)。

我有这个主要工作,但问题是在序列化期间, XmlSerializer 似乎只想处理public类的属性 - 如果声明了列表,它根本不会序列化 AnotherClass internal

我尝试使程序集的内部对序列化程序可见:

那似乎没有任何作用。有没有办法让 XmlSerializer 递归序列化声明为内部的对象列表?

0 投票
3 回答
1175 浏览

c# - 如何在 .NET winforms 中公开 ListView?

如何公开 ListView 以便我可以从第一个表单访问它?

0 投票
4 回答
3734 浏览

c# - 内部抽象方法。为什么会有人拥有它们?

我今天正在做一些代码审查,并遇到了一些开发人员编写的旧代码。它是这样的

如果您在同一个程序集中有一个派生类,它会起作用

但是在不同的程序集中派生基类会产生编译时错误

这让我思考。为什么有人将方法声明为内部抽象?

0 投票
8 回答
4500 浏览

java - Java protected 修饰符未按预期工作

我有以下两个文件:

水果.java:

苹果.java:

正如预期的那样,我无法从 Apple 类中访问受保护的方法 printName,因为它们位于不同的包中。我收到以下错误:

完全正确。但是,如果我按如下方式从类 superClass 继承,我不会收到任何错误!

为什么它允许我通过引用访问不同包中另一个类的受保护成员?这应该是非法访问,不是吗?

我很困惑!有人请帮忙。

该代码是使用 Java 1.6.0_18 编译的。

0 投票
4 回答
4755 浏览

c# - 为什么 C# 不允许在析构函数上使用访问修饰符?

我正在为一个小项目制作一个简单的类,并决定只为快速 impl 添加一个析构函数而不是 using IDisposable,每当有一个带有访问修饰符的析构函数时,我都会遇到编译器错误。

我尝试了公共的、私有的、受保护的和内部的。它在没有访问修饰符的情况下运行良好。因为这篇文章表明~destructor 本质上是受保护的 Finalize 函数的语法糖,所以你不能在析构函数上使用至少 protected 让我感到奇怪。文章确实说“无法调用析构函数。它们会被自动调用。” 这是执行该行为的方式吗?

无论如何我最终只是实现IDisposable了,但我很好奇......还有其他原因为什么你不能将访问修饰符放在析构函数上

0 投票
4 回答
8655 浏览

c# - 使用反射检测属性的访问修饰符类型

我编写了一些代码来使用反射查看属性。我已经使用反射从类中检索了一个属性列表。

但是,我需要确定该财产是公共的还是受保护的。例如:

PropertyInfo 类似乎没有公开有关该属性的信息。还有另一种方法可以做到这一点吗?

0 投票
5 回答
473 浏览

access-modifiers - 公共和私有访问修饰符

如果我们可以通过 setter 和 getter 访问私有成员,那么私有有什么用?