上QQ阅读APP看书,第一时间看更新
3.9 对象应当隐藏数据并暴露方法
对象的状态存储在成员变量中。这些成员变量都是数据。数据不应被外界直接访问,而只应当通过暴露方法和属性的方式来访问。
为什么应当隐藏数据并暴露方法呢?
隐藏数据并暴露方法在面向对象编程的世界中称为封装。封装对外隐藏了类的内部工作方式。因此,即使更改了数据值的类型,也不会破坏现有的依赖该类的实现。(封装后的)数据可以设置为可读可写、可写或者只读的,这样可以更加灵活地访问和使用数据。此外,还可以对数据进行校验以防止收到非法数据。封装同样可以降低类的测试难度,提高类的复用性和扩展性。
接下来将会以范例的形式进行说明。
封装范例
以下代码范例展示了如何封装类。Car
对象是可更改对象。它的属性在初始化后也是可读可写的。构造器调用时和属性赋值时都会执行参数验证。如果参数为非法值则抛出参数值非法异常,否则将传递参数并更改数据值。
上述代码的好处在于当属性的get
或set
方法对数据的验证发生改变时不会影响现有的实现。