封装:隐藏事物的属性和实现细节,对外提供公共的访问方式。
将成员变量声明为私有的(private),再提供一个或多个公有的(public) getXX()和setXX()方法实现对该成员变量的访问和修改。私有 仅仅是封装的一种表现形式(最小权限)。
**注意:类中私有的成员变量、成员方法只能在该类的内部调用,不能通过该类的对象调用
封装的好处:
隐藏了事物的实现细节
提高了代码的复用性
提高了安全性
封装的原则:
隐藏事物的属性
隐藏事物的实现细节
对外提供公共的访问方式
封装的目的:
隐藏类的实现细节;
让使用者只能通过指定的方法访问数据,可以方便加入控制逻辑,限制不合理的操作
便于修改,增强代码可维护性
可进行数据检查
java中四种不同的限定词限定的成员(成员变量或成员变量方法),访问权限由大到小依次为:
一、public(公共的)
可以被所有的类访问
二、protected(受保护的)
可以被这个类本身访问
可以被它的子类访问(同一个包以及不同包的子类)访问。
可以被同一个包中所有其他的类访问
三、default (默认的、友好的)
可以被这个类的本身访问
被同一个包中的类访问
四、private(私有的)
只能被这个类本身访问
如果一个类的构造方法声明为private,则其他类不能生成该类的实例
@各种情况下成员的可见性:
public成员 | protect变量 | 默认成员 | private成员 | |
---|---|---|---|---|
在同一个包,同一个类中可见 | 是 | 是 | 是 | 是 |
同一个包中,对子类可见 | 是 | 是 | 是 | |
同一个包中,对非子类可见 | 是 | 是 | 是 | |
不同包中,对子类可见 | 是 | 是 | ||
不同包中,对非子类可见 | 是 |