假设您正在foo()A类中编写方法.foo不会访问任何A的状态.你对foo的作用或行为方式一无所知.它可以做任何事情.
无论其他任何考虑因素,foo应该始终是静态的吗?为什么不?
似乎我的类总是在积累许多私有帮助器方法,因为我将任务分解并应用了only-write-it-once原则.其中大多数不依赖于对象的状态,但在类自己的方法之外永远不会有用.它们默认是静态的吗?结束大量内部静态方法是错误的吗?
有什么区别
public static void Main()
Run Code Online (Sandbox Code Playgroud)
和
private static void Main()
Run Code Online (Sandbox Code Playgroud)
在C#控制台应用程序中?具体而言,因为它涉及到Main()方法(I明白之间的差异public和private).
为什么反射可以在C#中访问类的受保护/私有成员?
这对于全班来说是不安全的,为什么反思会给予这种力量?这是反模式吗?
我刚才注意到了一些我以前从未意识到的东西.事实证明这个类在C#中是有效的:
class Foo
{
private string contents;
public Foo(string str) {
contents = str;
}
public void set(Foo other)
{
contents = other.contents;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,同一类的不同实例可以访问彼此的私有成员.
直到现在,我认为对象的私有成员只能被该对象访问,而不能被同一类的其他实例访问.发现这一点有点令人惊讶.
所有常见的面向对象语言都是这种情况吗?这对我来说并不直观.
我在Java中扩展了一个类,它有一个私有变量,我希望在变量之前得到它的值.没有方法可以在超类中访问此变量.我试过super().m_zoomArea(变量在ZoomableChartjChart2D 的类中).mouseDragged调用方法时更新变量.我已重写此方法,并希望在更新之前获取变量的值.
我有一个问题,我选择Python作为一个更大项目的可能语言的决定取决于答案 - 我自己无法想出:
我们都知道Python没有真正的对象封装,所以没有像对象的"私有"属性.关于这个问题,Guido van Rossum说,人们可以在不被"允许"的情况下访问异物的隐藏部分,"我们都是成年人","就是不要这样做".只要我自己编写的软件是我自己的,我就可以很好地生活,所以我对自己的错误负责,并且可以尝试避免这些事情.
但是 - 这就是我的问题:如果我提供一个带有一些扩展点的插件的插件框架,并且许多插件是由其他人,也许是我完全不能信任的插件.
如何防止暴露我的框架内部被插件访问?
有没有办法实现这一点,或者是使用Python有信心没有人会滥用我的API的唯一方法?
什么是有效的理由不使用关键字公共,私人,受保护的PHP?
故事:我已经开始了一个项目,其团队在他们的代码中积极使用访问修饰符(甚至明确地"公开"),并想说服我这样做.我总是觉得这种东西在像php这样的动态语言中完全没用,但我意识到我的直觉在技术讨论中几乎不是一个论点.因此,我正在寻找一个可靠,清晰的解释为什么访问修饰符在php中无用(甚至有害).
我知道已经存在一些类似的主题
但是我发布这个有几个原因
TIA