Java面对对象 二
封装
面向对象三大特征之一:封装
封装的概念:
将类的某些信息隐藏在类内部,不允许外部直接访问
而是通过该类提供的方法来实现对隐藏信息的操作和访问。
封装的两个大致原则:
1,把尽可能多的东西隐藏起来,对外提供边界的接口
2,把所有属性藏起来
为什么要使用封装:
属性随意访问
代码局部有缺陷 会有不合理的赋值
如何实现封装:
1,修改属性的可见性——>设为private防止错误的修改
2,创建共有的setter / getter方法——>用于属性的读写
3,在setter / getter方法中加入属性控制语句——>对属性值的合法性进行判断
封装的好处:
便于使用者正确使用系统,防止错误修改属性
有助于系统间的松耦合,提高系统的独立性
提高软件的可重用性
降低了大型系统的构建风险
<包>
为什么需要包:
windows树型文化系统
便于文档分门别类,易于查找和管理
使用目录解决文件同名冲突问题
如何将两个同名的类而不冲突? 使用包!
包命名的规范:
(1)包名由小写字母组成,不能以原点开头结尾
(2)包名之前最好加上唯一的前缀 通常使用组织倒置的网络域名
(3)包名后续部分以不同机构内部的规范不同而不同。
访问修饰符
从小到大
private(私有的) 本地访问
默认修饰符 本地访问,同包访问,
protected(受保护的) 本类访问,同包访问,子类访问
public(公开的) 本类访问,同包访问,子类访问,任何地方
static 修饰符
{成员变量:静态变量 可以直接通过类名访问
修饰:{成员方法:静态方法 可以直接通过通过类名访问
{代码块:静态代码块 当java虚拟机加载类时就会执行该代码块
(1)成员变量
a,类变量(静态变量)
被static修饰的变量
在内存中只有一个拷贝
类内部可以在任何方法内直接访问静态变量
在其他类中,可以直接通过类名访问,
b,实例变量
没有被static修饰的变量
每创建一个实例,就会以'实例变量分配一次内存
实例变量可以在内存中有多个拷贝,互不影响。
static变量的使用
(1)能被类的所有实施共享可作为实例间ji进行交流的共享数据
(2)如果类的所有实例都包含一个相同的常量属性,可以把这个属性定义为静态常量类型,节省内存空间
static方法:
(1)静态方法可直接通过类名的访问。
1,静态方法中不能直接使用this ,super
2,不能直接访问所属类的实例变量和实例方法
3,可直接访问类的静态方法,静态变量
(2)实例方法:通过实例访问
1,可直接访问所属类的静态变量,静态方法,实例变量与方法
PS:静态变量必须被实现,
main方法为static——>静态方法必须被执行 不需要创建对象就可以实行
static 代码块(静态块)
用法:static{
-------------
{
java虚拟机加载类时,加载静态代码块
1,如果有多个静态块,按顺序加载
2,每个静态代码只会被执行一次
3,方法里不可以定义static变量