35得票14回答
那么公共变量有什么好处呢?

我是一个完全的新手,脑海中有很多问题,还有很多需要用C++来体验!有一件事情让我感到非常困惑,那就是公共变量的使用,我看到了很多像这样的代码:class Foo { private: int m_somePrivateVar; public: void setThatPri...

35得票9回答
如何在不破坏封装性的情况下使用依赖注入?

如何在不破坏封装的情况下执行依赖注入? 使用维基百科上的依赖注入示例: public Car { public float getSpeed(); } 注意: 其他方法和属性(例如PushBrake(),PushGas(),SetWheelPosition()等)由于清晰起见...

35得票13回答
获取器和设置器是不好的面向对象设计吗?

Getter和Setter很糟糕 简单浏览上述文章后,我发现Getter和Setter是不良的面向对象设计,应该避免使用,因为它们违反了封装和数据隐藏。既然如此,在创建对象时如何避免这种情况,如何对对象进行建模以考虑这一点。 在需要getter或setter的情况下,还有哪些其他替代方案可...

34得票17回答
当我能够通过setter方法更改属性值时,封装有什么用处?

我曾经多次尝试理解这个问题,但一直没有成功。 封装是一种技术,在类中将字段设为私有的,并通过公共方法提供对该字段的访问。如果一个字段被声明为private,则无法从类外部访问它,从而隐藏了类中的字段。 我们如何通过setter方法改变字段的值?如何防止直接访问字段?封装到底有什么真...

33得票7回答
自动属性和手动实现属性有什么区别?还是都差不多?

我理解使用属性(PROPERTIES)优于字段(FIELDS)的好处,但是我觉得使用自动实现属性(AUTO-implemented properties)并没有什么优势,除了让代码变得更加简洁易读之外。 我更喜欢使用手动实现的属性: private string _postalCod...

33得票9回答
信息隐藏和封装有什么区别?

信息隐藏和封装之间有什么区别?我读过封装意味着将数据和应该一起操作它们的过程捆绑在一起。如果是这样,那么下面的类是否实现了封装?class IsThisEncapsulation { public int age; public int getAge() { ...

32得票9回答
封装 - 当setter已经是公共的时,为什么我们还需要它?

封装是隐藏数据。我希望在这里听到一些非常有趣的答案。 当我们已经声明公共setter方法来设置变量时,将变量保持为私有变量的目的是什么? 我理解封装的用途,但当我们将setter方法设为公共时,将变量保持为私有变量的意义是什么?我们可以直接使用public访问修饰符。 这是因为我们不想让...

29得票7回答
私有方法优于公共方法

我正在研究 StringTokenizer.java 类,脑海中浮现出一些问题。 我注意到这些供其他类使用的公共方法调用了某些私有方法来完成所有工作。现在,我知道面向对象设计的原则之一是尽可能将许多内容设为私有并隐藏所有实现细节。但我不确定完全理解其中的逻辑。 我明白将字段设为私有很重要,...

29得票5回答
封装为何是面向对象编程语言的重要特性?

我参加了不同的面试,被问到封装为什么被使用?实际上谁需要封装?是程序的用户吗?还是同事们?抑或是为了保护代码免受黑客攻击?

28得票2回答
全局定义的AngularJS控制器和封装性

根据AngularJS教程,控制器函数只需位于全局范围内。 http://docs.angularjs.org/tutorial/step_04 控制器函数本身是否自动解析为封装作用域,还是居于全局作用域?我知道它们会传递一个引用到它们自己的$scope,但它们似乎只是坐在全局作用域中。显...