回顾
访问一个不存在的属性,编译报错
当使用一个null值调用成员属性的时候会出现空指针异常,并且在运行时报错
1.面向对象
THIS
是什么
this:是每个对象中保存自身内存地址的一个引用变量,表示这个对象自己,相当于自己说"我"
做什么
1.用在成员方法/构造方法中,区分同名的局部变量和成员变量
语法:this.xxx = xxx;
2.在某个构造方法中,用于重载调用当前类中其他的构造方法,提高代码复用性
语法:this(参数);必须在构造方法的第一行
3.return this:返回当前对象的内存地址,可以做到链式调用
怎么用
1.区分成员和局部变量
2.重载调用构造方法
3.链式调用(核心点:前者的返回值一定是可以调用后者的引用)
谁调用的这个方法,this就是谁
this不能出现在静态方法中
Static
修饰符,主要用来区别静态和动态属性
能做什么
1.修饰类体中的静态变量
2.修饰静态方法
3.定义静态语句块
怎么用
1.静态变量
2.静态方法
3.静态语句块
一个大括号就是一个语句块,而方法就是一个有名字的语句块,可以重复使用
而静态语句块等同于静态方法,只不过没有名字、权限控制、参数列表、返回值,同理也就不能重复使用
静态语句块在类加载阶段执行并且只执行一次
访问类的静态属性的时候,类加载
4.实例语句块;:等同看作成员方法
语法:{ }
创建一次对象就执行一次
封装
是什么
封装是把对象的所有组成部分组合在一起,封装使用访问控制修饰符将类的数据隐藏起来,控制用户队数据的访问和修改的程度
软件包机制
package:是设置编译之后的class文件的保存位置,和源文件位置无关,如果在源文件中没有出现
package语句,则class文件和源文件在同目录
1.为了解决命名机制冲突问题,在类名前加入命名空间
2.package语句只能出现在java源文件的第一行,也可以没有
3.package一般采用公司域名倒叙的方式
4.带有package语句的java文件的编译
5.class文件的运行
import
1.引入当前类中需要的其他类,否则就需要写类全名,引入之后可以直接写类名使用即可
2.必须出现在package语句之下,class语句之上
3.import 包名.类名:之引入对应的某一个类
4.import 包名.*;引入该包下所有的类
5.java.lang.*下面的类是核心类,使用不需要导包
权限控制
限制某个属性可以被谁使用:public:公共的,谁都能访问
private:私有的,只有当前类能访问
protect:受保护的,继承权限
1.再有继承关系的体系中,通过子类调用
2.同包,就算没有继承关系,也可以进行访问
默认:当不使用以上三种修饰符的时候则是默认权限,只能让当前包中的;类使用