我一直在使用原型库一段时间,偶尔会发现自己希望我有多个访问级别(公共,私有和受保护).到目前为止我最接近的是以下内容:
SampleBase = Class.create({
/* virtual public constructor */
initialize: function(arg1, arg2)
{
// private variables
var privateVar1, privateVar2;
// private methods
var privateMethod1 = function() { }
function privateMethod2() { }
// public (non virtual) methods
this.publicNonVirtual1 = function() { return privateVar1; }
this.publicNonVirtual2 = function() { return privateVar2; }
},
// public methods (that cannot access privates)
publicVirtual1: function() { /* Cannot access privates here. */ },
publicVirtual2: function() { /* Cannot access privates here. */ }
}); …Run Code Online (Sandbox Code Playgroud) 我认为sealed应该包含在C#语言的访问修饰符列表中.有人可以说出它被排除在外的原因吗?
namespace hi
{
class hithere
{
public int numberOne = 12;
private int numberTwo = 12;
static void yo()
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这段代码摘录中有人能告诉我变量numberOne和numberTwo之间的区别吗?
我收到此错误:
由于其保护级别,'CTest.AA()'无法访问.
编译此代码时:
public class A
{
private A()
{
}
}
public class B : A
{
public void SayHello()
{
Console.WriteLine("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
有谁能解释为什么?
我需要声明一个受保护和内部的成员.然而,就我完全的困惑而言,我刚刚发现"受保护的内部"实际上意味着受保护的OR内部的困难方式.是否有任何访问修饰符意味着受保护的AND内部?
我已将一个表单添加到项目中以创建自定义消息框.这个消息框只适用于项目中,所以我想知道是否有一种方法可以让它从表单设计器内部/私有?或者我是否必须直接在代码中更改它?我不应该这样做吗?
谢谢!
我的意思是,如果我在Java中声明任何访问修饰符,那么修饰符可以被规避(包私有和受保护 - 包注入;任何 - 反射).我知道声明这些东西有助于理解和组织代码,但除此之外,是否有任何技术原因或固有的Java功能?
谢谢你们的精彩回应.我很遗憾我只能标记一个答案.
C#故意阻止我在接口成员上放置内部访问修饰符.我很确定他们必须付出额外的努力才能实现这一限制,因为他们可以同样允许它.
应该有充分的理由去投入这些努力 - 哪一个?
对我来说,在接口上使用内部访问修饰符来实现"从外部防止可变性"将是有用的.例如,考虑以下界面:
interface IMessage
{
...
DateTime LastSentTimestamp { get; internal set; }
...
}
Run Code Online (Sandbox Code Playgroud)
在我的消息代理内部,我希望能够设置LastSentTimestamp.我的API的外部用户不应该更改它.当然,我可以抛弃接口并使用类,但是,这会删除所有接口的优点(例如,随时更改实现等)
Q1:我不明白为什么他们限制我.有什么特别的原因吗?
Q2:我正在寻找针对上述特定情况的解决方法.拆分界面分为两个(IMessage和IInternalMessage)看起来像是一个巨大的痛苦屁股,希望不是我唯一的选择...
据我所知,public/protected/private关键字对创建时间没有影响.但我想知道保持公共对象/类可访问应该有成本.它有成本吗?
access-modifiers ×10
c# ×6
java ×3
.net ×1
constructor ×1
forms ×1
inheritance ×1
interface ×1
javascript ×1
performance ×1
prototypejs ×1
sealed ×1
theory ×1