封装
封装,继承,多态—面向对象的3大特征。
封装包含2方面的意思:
1.隐藏:隐藏内部实现细节
2.暴露:将一些操作界面暴露出来。如果通过暴露的界面来操作对象,该对象的内部状态不会被破坏。
简而言之:封装要求合理隐藏,合理暴露。
访问控制器
private -> default(不写) ->protected ->public
private(类访问权限):该修饰符修饰的成员,只能在该类中被访问。 彻底隐藏
default(包访问权限):该修饰符修饰的成员,只能在该类及其该类所在包中被访问。部分隐藏
protected(子类访问权限):该修饰符修饰的成员,只能在该类、及其该类所在包、该类的子类中被访问。部分暴露
public(公共):该修饰符修饰的成员可以在任意地方被访问。彻底暴露
private | default | protected | public | |
---|---|---|---|---|
当前类 | √ | √ | √ | √ |
同一个包 | × | √ | √ | √ |
子类 | × | × | √ | √ |
任意 | × | × | × | √ |
指定原则:
①成员变量(实例变量),通常用private修饰,为了隐藏实现细节。
②为每个成员变量提供public的getter、setter方法,用于控制该成员变量的访问。
③需要暴露的公共方法,通常用public修饰。
④如果希望一个方法修饰主要用于被子类重写,用protected。
包
不同公司完全可以定义同名的类,为了解决不同公司、不同项目类名重复的问题,Java就引入“包”机制——就是在类名前面添加前缀。
- Java程序如何为类定义包?
1.在源代码中用package 包名;
2.将生成class文件放在对应的文件结构下。 - 包名的命名规范
语法要求:只要标识符即可
专业要求:推荐用公司域名倒写,再加项目名
【备注】一旦为类指定了包名之后,使用该类时应该用完整类名:包名+类名
导包
import的作用:为了省略包名。如果不用import,每次用类时都需要使用包名+类名的形式。
- import 包名.类名:–每次导入一个类
- import包名.*:–导入指定包的所有类。【*号只能代表类名,包名不能用】
静态导入 import static
import的作用:为了省略包名。
import static的作用:可以省略写类名。用于导入指定类的所有静态成员,导入之后,即可省略写类名。
import static 包名 . 类名 . 静态成员名:–每次只导入一个静态成员。
import static 包名 . 类名 . *:–导入指定类的所有静态成员。