封装
1.封装的定义
封装:面向对象方法的重要原则,就是把对象的属性和方法结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
将对象明确一个边界,区分对象外部和内部;对象边界有两个作用,其一是把握对象粒度,粒度过小造成对象多、系统复杂,粒度过大导致对象复杂。还有一个作用是对象中属性数据的隐藏。
那么如何定义边界以及外部对对象内部属性或函数的控制呢?
访问权限修饰符:
public:公开的
- 修饰的属性或方法不受对象的边界的控制
- 从对象的外部可以访问到
private:私有的
- 修饰的属性或方法无法突破对象的边界
- 只能从对象的内部访问到
如果设置为私有属性,外部又该如何访问呢?
使用公开的方法间接地访问私有的属性,就相当于规定了访问的途径,访问属性的途径单一了,就可以控制访问的权限。
举例说明,假如设计一个私有属性name,外部要设置它的值或获取值:
通常一个类的属性都是私有属性,只能通过公开的方法间接 地访问这些属性。通过使用访问权限修饰符,可以灵活的控制某个属性的访问 权限(只读/只写/读写),对象的属性全部在自己的控制之下, 实现数据隐藏。
方法也可以使用private修饰,这样的方法叫做私有方法。有些方法只希望能被同一个对象的其它方法调用,不希望其 它对象调用,可以定义成私有方法。
公开的方法指的是方法的声明公开,方法的实现隐藏。方法的调用者只需要关心方法的声明,在声明不变的情况下, 即使改变方法的实现,也不会影响方法的调用者。
2.封装的作用
- 让对象能够各司其职
- 使对象之间为弱耦合性
迪米特法则:一个对象应当对其他对象有尽可能少的了解。
封装的目的:尽量降低类的属性和方法的访问权限。