java什么时候应该使用封装?
我正在完成Sun/Oracle的跟踪(http://docs.oracle.com/javase/tutorial/java/TOC.html),它不断重申封装的重要性
封装到底有多重要?我的意思是,如果我可能需要访问给定类字段的值,为什么我要通过一个方法来访问,而我可以直接访问该字段?既然字段将通过其相应的对象访问,那么这到底会出什么问题呢
它只是为了代码扩展的目的吗?换句话说,因为在将来,如果我决定在返回字段之前以某种方式修改或清理字段,我可以吗
我更想找一两个例子
# 1 楼答案
封装不仅仅是为字段制作getter和setter
它是关于:
即使如您所说的“需要访问给定类字段的值”,您也不能确定此要求不会更改(因为大多数情况下会更改)
# 2 楼答案
验证
如果不使用方法,则无法在字段上添加任何验证,除非在每个要访问字段的位置进行验证:不可持续
它还将数据从课堂与外部世界分离。通过将数据的实际实现隐藏在方法后面,您可以按照自己想要的方式(现在和将来)操作数据,而不会破坏其他代码片段。这允许您在没有问题的情况下更改某些内容的表示方式,只要您确保它仍然可以通过现有方法返回
# 3 楼答案
封装允许对象控制自己的数据,从而使调试变得相当容易,从而使对象能够保证(对象的契约的一部分)。考虑这个类:
任何其他代码都可以自由地将
travelSpeed
设置为零,这将导致以后对calculateTravelTime方法的所有调用都失败。更糟糕的是,您将无法知道是谁将其设置为零,因此调试问题将需要很长时间然而,通过封装,类可以完全控制该值,并且可以保证它始终有效:
现在,任何外部代码都不可能将对象置于无效状态。如果有人试图这么做,产生的IllegalArgumentException将为您提供一个信息丰富的堆栈跟踪,该跟踪将立即暴露罪魁祸首
作为奖励,所有使用该类的其他代码不再需要对其有效性进行任何检查,因为对象本身已经可以保证其有效性。这使得每个人的整体发展都要快得多