Questions tagged «access-modifiers»

访问修饰符是OOP概念。它确定特定属性/方法/类具有什么级别的访问权限或可见性。







17
Swift是否具有访问修饰符?
在Objective-C实例数据可以是public,protected或private。例如: @interface Foo : NSObject { @public int x; @protected: int y; @private: int z; } -(int) apple; -(int) pear; -(int) banana; @end 在Swift参考中,我还没有提到访问修饰符。是否有可能限制Swift中数据的可见性?

16
有什么理由在C#中使用私有属性吗?
我刚刚意识到C#属性构造也可以与私有访问修饰符一起使用: private string Password { get; set; } 尽管从技术上讲这很有趣,但是我无法想象何时使用它,因为私有字段甚至仪式更少: private string _password; 而且我无法想象何时需要内部获取但不设置或设置但不设置获取私有字段: private string Password { get; } 要么 private string Password { set; } 但是也许有一个带有嵌套/继承类的用例,或者一个get / set可能包含逻辑而不是仅仅返回属性的值,尽管我倾向于使属性严格简单,让显式方法执行任何逻辑,例如GetEncodedPassword()。 是否有人出于某种原因在C#中使用私有属性,还是仅仅是在技术上实际上尚未实际使用的代码构造之一? 附录 不错的答案,仔细阅读它们,我便剔除了私人财产的这些用途: 当需要延迟加载私有字段时 当专用字段需要额外的逻辑或为计算值时 因为私有字段可能很难调试 为了“向自己出示合同” 在内部转换/简化公开属性作为序列化的一部分 包装全局变量以在您的类中使用


5
Java是否具有“专用保护”访问修饰符?
我已经看到一些参考引用了Java中称为private protected(两个词在一起)的访问修饰符: private protected someMethod() { } 我发现与此有关的页面之一在这里。我的学校课上也提到了这个访问修饰符(并说它存在)。但是,使用它会导致Java语言错误。 我尝试了变量和方法,我很确定它不存在,但是我想解释一下发生了什么。是否考虑过,然后拒绝了?还是在Java的较新版本中将其删除? 编辑:我不是在寻找有关protected关键字的信息。


2
为什么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{..} }

6
计划中的“受私有保护”的C#访问修饰符是什么意思?
作为GitHub上Roslyn文档的一部分,有一个页面叫语言功能实施状态,其中包含计划的C#和VB语言功能。 private protected访问修饰符是我无法解决的一个功能: private protected string GetId() { … } 还有一个C#语言设计说明页面,其中介绍了许多新功能,但没有介绍这一功能。 埃里克·利珀特(Eric Lippert)在评论中说: 您的错误是将修饰符视为增加的限制。实际上,修饰符总是会减少限制。请记住,默认情况下事情是“私有的”。仅通过添加修饰符,您才能使它们的约束更少。 是什么意思private protected?我什么时候可以使用?

9
有什么理由在C#中编写“ private”关键字?
据我所知,private是默认无处不在C#中(也就是说,如果我不写public,protected,internal等这将是private默认情况下)。(如果我错了,请纠正我。) 那么,写该关键字的原因是什么,或者为什么它甚至对于成员来说仍然存在? 例如,当事件处理程序自动生成时,它看起来像这样: private void RatTrap_MouseEnter(object sender, CheeseEventArgs e) { } 但是,如果隐含和默认了,为什么还要写私有呢?只是这样,新手开发人员(谁不知道这是C#默认值)便知道它是私有的?还是编译器有区别? 此外,是否存在写“私有”(单独)会改变成员可访问性的情况?

7
Python中的“私有”(实现)类
我正在编写一个由两部分组成的小型Python模块: 一些定义公共接口的功能, 上述函数使用的实现类,但在模块外部没有意义。 首先,我决定通过在使用它的函数内部定义该实现类来“隐藏”该实现类,但这会影响可读性,并且如果多个函数重用同一类,则无法使用该实现类。 因此,除了注释和文档字符串外,是否存在将类标记为“私有”或“内部”的机制?我知道下划线机制,但据我了解,它仅适用于变量,函数和方法名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.