问题标签 [access-levels]

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 投票
5 回答
6651 浏览

java - Java 保护访问不起作用

在java中,访问权限分为三个级别:

  • 公开 - 向世界开放
  • 私人 - 只对班级开放
  • 受保护 - 仅对类及其子类(继承)开放。

那么为什么 java 编译器允许这种情况发生呢?

TestBlah.java:

废话.java:

布卢.java:

0 投票
9 回答
16514 浏览

php - 常见的 CMS 角色和访问级别

我目前正在编写一个 CMS,并记得有人(它可能在这里)批评现有的 CMS 没有足够强大的用户权限系统。我已经计划好了一个方法,但我觉得它已经落入了一个过于细粒度的通常陷阱,这使得最终用户对它的理解和实施感到恐惧。

我认为拥有一系列具有权限的默认用户角色将是对此的答案,所以我想我的问题是:

您希望在 CMS 中看到哪些默认角色以及与这些相关的权限类型?

提前致谢!

0 投票
3 回答
198 浏览

language-agnostic - 是否存在具有基于对象访问级别的语言?

关于 Java、C#、C++ 和 PHP 中访问级别的一个常见误解是它适用于对象而不是类。也就是说,(比如说)X 类的一个对象不能看到另一个 X 的私有成员。事实上,当然,访问级别是基于类的,一个 X 对象可以毫不费力地引用另一个对象的私有成员。

是否存在具有基于对象访问级别的语言?它们是替代或补充基于类的访问吗?这个特性对程序设计有什么影响?

0 投票
2 回答
509 浏览

java - 应该将记录器设置为什么访问级别?

我在下面使用带有 Log4J 的 SLF4J。我应该将记录器设置为哪些访问级别?

0 投票
7 回答
24162 浏览

c# - 如何将嵌套类成员的访问限制为封闭类?

是否可以指定嵌套类的成员可以由封闭类访问,但不能由其他类访问?

这是问题的说明(当然我的实际代码有点复杂......):

我想阻止客户端代码创建 的实例JournalEntry,但Journal必须能够创建它们。如果我将构造函数公开,任何人都可以创建实例......但如果我将其设为私有,Journal将无法!

请注意,JournalEntry该类必须是公共的,因为我希望能够将现有条目公开给客户端代码。

任何建议将不胜感激!


更新:感谢大家的投入,我最终选择了IJournalEntry由私有类实现的公共接口JournalEntry(尽管我的问题中有最后一个要求......)

0 投票
8 回答
3213 浏览

c# - C# 保护字段为私有,添加属性——为什么?

在 Visual Studio 2008 Team System 中,我刚刚对我的一个 C# 项目运行了代码分析(从分析菜单中)。产生的警告之一如下:

Microsoft.Design :因为字段“Connection._domain”在其声明类型之外是可见的,将其可访问性更改为私有并添加一个与该字段当前具有相同可访问性的属性以提供对其的访问。

它指的是以下领域:

我不明白这个建议背后的原因。这就是我认为它希望我做的事情:

两个问题:

  1. 我是否正确理解了建议要我做什么,代码方面?
  2. 为什么它要我这样做?
0 投票
4 回答
2582 浏览

java - 使用java反射调用匿名类的方法时访问异常

我正在尝试使用事件调度程序来允许模型在更改时通知订阅的侦听器。事件分派器接收一个处理程序类和一个方法名称,以便在分派期间调用。演示者订阅模型更改并提供要在更改时调用的 Handler 实现。

这是代码(对不起,它有点长)。

事件分配器:

模型:

模型更改处理程序:

主持人:

主要的:

现在,我希望收到“模型已更改”的消息。但是,我得到一个 java.lang.IllegalAccessException: Class utils.EventDispatcher can't access a member of class presenter.Presenter$1 with modifiers "public"。

我知道要责备的类是我在演示者内部创建的匿名类,但是我不知道如何使它比现在更“公开”。如果我用一个命名的嵌套类替换它,它似乎可以工作。如果 Presenter 和 EventDispatcher 在同一个包中,它也可以工作,但我不能允许(不同包中的几个 Presenter 应该使用 EventDispatcher)

有任何想法吗?

0 投票
2 回答
486 浏览

ruby-on-rails - Rails authlogic : How to make Levels?

I followed this tutorial for setting Autlogic up properly. So, my site needs a form of level, like "Admin", "Moderator", "User", "Guest". So Admins can do everything, where Moderators may not can make site changes. And Users can't destroy, Update or Create.

0 投票
5 回答
386 浏览

c# - 你选择什么,受保护的还是内部的?

如果我有一个带有我想要的方法的类,protected并且internal. 我希望只有程序集中的派生类才能调用它。

既然protected internalprotected internal,你必须做出选择。在这种情况下你选择什么 -protectedinternal

0 投票
6 回答
18940 浏览

c# - 受保护的成员/字段真的那么糟糕吗?

现在,如果您阅读 MSDN for C# 中的命名约定,您会注意到它声明属性始终优先于公共和受保护字段。有些人甚至告诉我,你永远不应该使用公共或受保护的字段。现在我同意我还没有找到需要公共字段但受保护字段真的那么糟糕的原因吗?

如果您需要确保在获取/设置值时执行某些验证检查,我可以看到它,但是在我看来,很多时候这似乎只是额外的开销。我的意思是说我有一个 GameItem 类,其中包含 baseName、prefixName 和 suffixName 字段。为什么我要承担创建属性C#(某些语言PHP(例如游戏)或某些性能至关重要的应用程序)?