问题标签 [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.
java - java.lang.Object 的受保护方法如何免受子类的影响?
关键字protected
授予对同一包和子类 ( http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html ) 中的类的访问权限。
现在,每个类都有java.lang.Object
超类(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html)。
因此我得出结论,每个类都可以访问java.lang.Object
的方法,即使它们是protected
。
看看下面的例子:
虽然getOne()
编译得很好,但getTwo()
给出
我既不明白为什么getTwo()
不编译也不明白java.lang.Object
与getOne()
.
c# - 为什么我不能拥有受保护的接口成员?
反对在接口上声明受保护的访问成员的论点是什么?例如,这是无效的:
在这个例子中,接口IOrange
将保证实现者至少OrangePips
向他们的继承者提供一个实例。如果实施者愿意,他们可以将范围扩大到 full public
:
接口成员的目的protected
是为继承者(子类)提供支持契约,例如:
(诚然,这对 s 不起作用struct
)
我在接口中看不到private
orinternal
修饰符的太多情况,但同时支持public
andprotected
修饰符似乎是完全合理的。
我将尝试通过将成员与s 完全分开来解释protected
成员在s 上的效用:interface
interface
让我们想象一个新的 C# 关键字 ,support
来强制继承合同,因此我们声明如下:
这将允许我们通过契约类为它们的继承者提供受保护的成员:
这并不是特别有用,因为类已经通过protected
首先提供成员来暗示这种契约。
但是我们也可以这样做:
从而适用IOrangeSupport
于所有实现IOrange
并要求它们提供特定protected
成员的类——这不是我们目前可以做的事情。
python - Python中的“私有”(实现)类
我正在编写一个由两部分组成的小型 Python 模块:
- 一些定义公共接口的函数,
- 上述函数使用的实现类,但在模块外没有意义。
起初,我决定通过在使用它的函数中定义它来“隐藏”这个实现类,但这会妨碍可读性,并且如果多个函数重用同一个类,则无法使用。
那么,除了注释和文档字符串之外,是否还有一种机制可以将类标记为“私有”或“内部”?我知道下划线机制,但据我了解,它仅适用于变量、函数和方法名称。
c# - 除了这样,为什么我不能访问受 C# 保护的成员?
这段代码:
生成此错误:
无法通过“C”类型的限定符访问受保护的成员“CF(D)”;限定符必须是“D”类型(或派生自它)
他们到底在想什么?(更改该规则会破坏某些东西吗?)除了公开 F 之外,还有其他方法吗?
编辑:我现在明白了为什么会这样(谢谢Greg)但我仍然对理性感到有些困惑;给定:
为什么D不能调用 EF?
错误消息已编辑,因此我可能在其中输入了错字。
c# - “受保护”和“受保护内部”有什么区别?
protected
有人可以解释一下 C# 中的和protected internal
修饰符之间的区别吗?看起来他们的行为是相同的。
java - 受保护/公共内部类
protected
有人可以向我解释/public
内部课程有什么区别吗?
我知道public
内部类是要尽可能避免的(就像在这篇文章中解释的那样)。
但据我所知,使用protected
或public
修饰符之间没有区别。
看看这个例子:
...
...
所有这些都编译并且无论我声明InnerFoo
protected
还是public
.
我错过了什么?请指出一个使用protected
or有区别的情况public
。
谢谢。
interface - 面向对象的分析与设计
为什么我不能在接口中指定静态类型的方法。
有没有其他方法可以做到这一点?
但我应该只使用抽象类的接口。
/
在接口中指定访问说明符有什么问题吗?
我想在接口中指定事件,并且只能由实现的类访问,所以我想要该事件的受保护访问说明符。
我有某些功能可以在另一个类中使用接口,在这种情况下我可以使用公共访问说明符。
c# - 在 C# 中,public、private、protected 和没有访问修饰符有什么区别?
我一直在使用的所有大学时期public
,并且想知道 , 和 之间public
的private
区别protected
?
还有什么static
做而不是一无所有?
java - 扩展 jog4j RollingFileAppender rollOver() 访问级别的问题
我正在尝试扩展 RollingFileAppender,以便即使没有消息进入日志系统,它也会旋转。通常,当消息到达并进行时间检查以触发旋转时,会调用 rollOver 方法。
我的 RollingFileAppender 版本将每 x 秒调用一次 rollOver,这样即使没有消息到达,我也可以保证轮换。
现在我的问题是 RollingFileAppender rollOver 的访问级别修饰符没有修饰符。因此,我不能像我希望的那样每隔 x 秒调用一次。
现在查看代码,我不明白为什么它不需要修改器,我决定将该类放入我的包中并调用 rollOver。
现在这感觉很脏,如果我想调用翻转,我还有其他选择吗?