面向对象 - 方法与变量访问

时间:2016-05-26 23:11:59

标签: class oop object methods

我听说使用方法访问值比简单地调用变量本身的值要好得多。例如,使用银行帐户类,最好使用。

myAccount.getBalance()

而不是直接使用

访问变量
myAccount.balance

这种方法的目的是什么,因为第二种方法似乎更直接,需要更少的字符才能完成。

4 个答案:

答案 0 :(得分:5)

如果您重视封装和信息隐藏的想法,那么该方法会更好。

更直接?也许。但间接正是这种方法通常更好的原因。如果getBalance()真正意味着利用多个外部服务的复杂计算,该怎么办?用户不必担心这种复杂性;他们所知道的只是他们称之为方法。它隐藏在对象的界面后面。

面向对象编程带来了四个想法:

  1. 抽象数据类型
  2. 封装和信息隐藏
  3. 继承
  4. 多态性
  5. 不要那么轻易地把基本面丢掉。

    我会把它还给你:追求价值你会节省多少钱?打字?击键很便宜。性能?请。没有充分的理由在变量之后立即行动。

答案 1 :(得分:1)

少数字符不是目标,目标是拥有可管理的代码,具有更多控制权。

直接访问类变量时,将覆盖该类的所有业务逻辑。如果未计算余额怎么办?如果没有经过验证怎么办?如果封装了那些数据(声明变量是私有的,并且只允许通过方法访问),则可以控制调用代码接收的内容,并且您的代码有机会执行所需的业务逻辑。

答案 2 :(得分:1)

方法更好

与您的示例相关的可能结果,如果您的帐户类稍后被调整为包含您帐户中的交易列表并且余额未存储但已计算,该怎么办?使用方法,这只是类中的更改,无需更新使用余额的系统的所有部分。

答案 3 :(得分:0)

我同意你的说法并且老实说,我经常坚持使用这些方法,使用这些方法的目的是什么,创建它们更麻烦(不是真的)但仍然比直接调用它更麻烦。实际上,当你使用Encapsulation(OOP的支柱)时,方法会更好。 封装意味着来封装第三方访问数据,我们将其称为其他类。我们使用私有访问修饰符来限制访问,因此我们创建Setter and getters,您可以将其定义为Mutator/Accessor。 现在问题是为什么我们使用方法? 为什么我们需要创建它们? 答案很简单,if you want to add additional check before setting the state of an object, and that's the reason we create methods for accessing the value from outside of the class or the same class doesn't matter. 喜欢考虑这一点。

public void setRadius(int a)
{
 if(radius>0)
 radius=a;
}

如果封装了类的数据字段,则还必须添加获取值的方法。

如果你没有封装并制作它的方法,你可能从未这样做过。