Tag: 访问修饰符

Java中的静态块没有执行

class Test{ public static void main(String arg[]){ System.out.println("**MAIN METHOD"); System.out.println(Mno.VAL);//SOP(9090); System.out.println(Mno.VAL+100);//SOP(9190); } } class Mno{ final static int VAL=9090; static{ System.out.println("**STATIC BLOCK OF Mno\t:"+VAL); } } 我知道一个static块加载类时执行。 但是在这种情况下,类Mno的实例variables是final ,因为static块没有执行。 为什么? 如果我将删除final ,它会工作正常吗? 哪个内存将被首先分配, static finalvariables还是static块? 如果由于final访问修饰符类没有得到加载,那么variables如何获得内存?

为什么Typescript使用关键字“export”来公开类和接口?

当涉及Typescript的时候,我意识到模块中的类(用作名称空间)对于其他类是不可用的,除非我在它们之前写了export关键字,例如: module some.namespace.here { export class SomeClass{..} } 所以现在我可以像这样使用上面的代码: var someVar = new some.namespace.here.SomeClass(); 然而,我只是想知道为什么这个关键字被用来反对只使用在方法级别使用public关键字来表示方法或属性应该是外部访问。 那么为什么不使用这个相同的机制来使类和接口等在外部可见呢? 这会给结果代码如: module some.namespace.here { public class SomeClass{..} }

任何理由写在C#中的“私人”关键字?

据我所知, private是C#中的默认设置(这意味着如果我不写public , protected , internal等,默认情况下它是private的)。 (如果我错了,请纠正我) 那么,写这个关键字的原因是什么,或者为什么成员存在呢? 例如,当一个事件处理程序是自动生成的,它看起来像这样: private void RatTrap_MouseEnter(object sender, CheeseEventArgs e) { } 但为什么它甚至写私人,如果这是暗示和默认? 只是让新手开发人员(谁不知道这是C#默认)知道它是私人的? 或者编译器有什么不同? 此外,有没有写“私人”(单独) 会改变会员的可及性?

在Java中,封装私有,公共,受保护和私有之间的区别

在Java中,在制定class和interface以及处理inheritance时,是否明确规定何时使用每个访问修饰符,即默认(package private), public , protected和private ?

计划的“私人保护”C#访问修饰符的含义是什么?

作为CodePlex上的Roslyn文档的一部分,有一个称为语言function实现状态的页面,其中包含针对C#和VB的计划语言function。 我不能包裹头部的一个特点是private protected访问修饰符: private protected string GetId() { … } 还有一页C#语言devise笔记 ,它解释了许多新function,但不是这一个。 Eric Lippert在评论中表示 : 你的错误在于将修饰符视为越来越多的限制。 事实上,修饰语总是减less限制。 请记住,事情默认情况下是“私人的” 只有通过添加修饰符,你可以减less限制。 private protected是什么意思? 我什么时候可以使用它?

有什么理由在C#中使用私有属性?

我刚刚意识到C# 属性构造也可以与私有访问修饰符一起使用: private string Password { get; set; } 虽然这在技术上是有趣的,但我无法想象我什么时候可以使用它,因为私人领域涉及更less的仪式 : private string _password; 我无法想象我什么时候需要能够在内部得到但没有设置或设置,但没有得到一个私人领域: private string Password { get; } 要么 private string Password { set; } 但也许有嵌套/inheritance类的用例,或者可能在一个get / set可能包含逻辑,而不是只是回报属性的值,虽然我倾向于保持属性严格简单,让明确的方法做任何逻辑,例如GetEncodedPassword() 。 有没有人在C#中使用私有属性是出于任何原因,还是仅仅是那些技术上可能的但很less使用的实际代码结构之一? 附录 很好的答案,阅读他们我把这些用途私有财产: 当私人领域需要延迟加载 当私人领域需要额外的逻辑或计算值 因为私人领域可能难以debugging 为了“向你自己提出合同” 作为序列化的一部分内部转换/简化一个暴露的属性 包装全局variables在你的类中使用

Java是否有“私有保护”访问修饰符?

我已经看到一些引用引用了Java中的访问修饰符,称为private protected (两个词一起): private protected someMethod() { } 我发现的其中一页是指这里 。 我的学校课也提到了这个访问修饰符(并表示它存在)。 但是,使用它会导致Java语言中的错误。 我尝试了variables和方法,我很确定它不存在,但我想要解释发生了什么。 是否考虑过,然后被拒绝? 还是在新版本的Java中删除? 编辑:我不是在寻找关于protected关键字的信息。

Python中的“Private”(实现)类

我正在编写一个由两部分组成的小型Python模块: 一些定义公共接口的函数, 上述函数使用的一个实现类,但在模块之外是没有意义的。 起初,我决定通过在函数内定义它来隐藏这个实现类,但是这会妨碍可读性,如果多个函数重用同一个类,就不能使用它。 那么,除了评论和文章外,是否有机制将class级标记为“私人”或“内部”? 我知道下划线机制,但据我所知,它只适用于variables,函数和方法名称。

为什么我不能访问受C#保护的成员,除此之外?

此代码: abstract class C { protected abstract void F(D d); } class D : C { protected override void F(D d) { } void G(C c) { cF(this); } } 产生这个错误: 不能通过'C'types的限定符访问受保护成员'CF(D)'; 限定词必须是“D”型(或从中派生出来) 他们在想什么呢? (会改变这个规则打破了什么?)除了公开F吗? 编辑:我现在得到这是为什么的原因(感谢格雷格 ),但我仍然有点困惑的理性; 给定: class E : C { protected override void F(D d) { } } 为什么D不能够调用EF? 错误消息被编辑,所以我可能会在那里input一个错字。

Dim,Global,Public和Private作为模块化字段访问修饰符有什么区别?

在VB6 / VBA中,可以在特定的Sub或Function方法之外声明模块级别的variables。 我在模块内部使用了Private和Public ,并且像这样理解它们: Public – 对模块内的所有代码和模块外的所有代码都是可见的,实质上使其成为全局代码。 Private – 仅对模块内部的代码可见。 我注意到你可以使用Dim和Global作为模块化variables的修饰符。 Dim和Global分别与Private和Public不同,当用作模块化字段的访问修饰符时? 如果是这样,他们有什么不同?