Java面向对象
一、this关键字
含义:代表当前new的对象,存储了该对象的地址
1.构造器中使用
放在构造器的首行用来调用本类中的其他重载的构造器
样式:this(参数列表);
2.用来区分与成员变量同名的局部变量
当出现同名时,默认就近原则,如果想要代指成员变量就需要使用this关键字(this.成员变量)调用,当没有同名问题时,指代成员变量的this关键字可以省略
3.this出现的位置
1.当this出现在构造器中的时候,默认指代当前new的对象
2.当this关键字出现在成员方法中的时候,默认指代当前调用成员方法的对象
4.注意事项
1.构造器之间不能使用this相互调用,会出现类似死循环
2.在静态方法(static修饰的方法)中不能使用this
二、static关键字
static 静态的
static关键字是成员修饰符,只能修饰成员,不能修饰局部
静态属于类,成员属于对象
静态内容是独一份的,在类第一次加载完成之后就进行初始化,只初始化一次
静态变量在静态区中(方法区中),所有对象共享的唯一的静态内容
加载内容是先静态后成员
1.静态成员变量与静态方法
成员变量:
不被static修饰的变量 ---->实例变量|成员变量
被static修饰 ---->静态变量|类变量
成员方法:
不被static修饰的方法 ---->实例方法|成员方法
被static修饰 ---->静态方法|类方法
注意:无论是否被static关键字修饰都定义在成员位置,都是成员,只是习惯的称呼不同
2.静态方法或静态成员变量的使用
1.通过对象使用,通过对象的引用调用
引用.静态变量名;
引用.静态方法名(参数列表);2.通过类名直接调用
类名.静态变量名;
类名.静态方法名(参数列表);
3.使用范围
1.工具类: jdk封装,自己封装… Math,Arrays…
一般为静态工厂,简单,方便用户使用
2.一个类中多个对象的共享资源,独一份,可以使用静态变量定义,但是不决对
4.使用注意事项
1.静态方法中不能使用this,因为静态方法可以通过类名调用,在调用时可以存在对象,所以不允许使用
2.使用要符合逻辑,不能随便定义
三、block块 {}
block块 {} 自成作用域
定义位置 | 执行时机 | 执行 | 作用 |
---|---|---|---|
局部代码块|普通语句块—>定义在方法或语句块中 | 所在方法被调用的时候 | 顺序执行 | 1.自成作用域 2.具有语义化特点 |
构造块—>{} 定义在类中方法外 | 创建对象的时候 | 构造块中的代码在编译期间会被编译到要执行的构造器代码上面,所以构造块代码在构造器代码之前执行,如果存在多个构造块,从上到下依次执行 | 一般也是为对象的成员初始化 |
静态块—>static {} 定义在类中方法外 | 类加载 | 在类第一次加载完成之后,就执行,并且只执行一次, 如果存在多个静态块,从上到下依次执行 | 一般作为一些数据的加载,配置…在类加载完成之后就执行,并且只执行一次,后续不能调用,不需要调用,可以为静态内容做初始化操作 |
执行顺序:静态块–>main–>创建对象了–>构造块–>构造器
注意:关于构造块:构造块的代码会被编译到要执行的构造器代码的上面
四、debug的作用
1.追踪程序的执行流程
2.定位异常的位置
3.查看程序执行过程中变量的变化情况
4.根据程序的执行过程学习第三方框架的源码
五、封装
面向对象的三大特性: 封装 继承 多态
封装: 隐藏内部的实现细节,对外提供公共的访问方式
优点:
隐藏内部的实现细节,对外提供公共的访问方式
提高安全性
提高复用性体现:
类,方法等都是封装的体现
属性私有化是封装的体现
私有是封装
封装不仅仅是私有
使用:使用private私有化成员变量,并使用一对set,get的公共的方法
六、Javabean
代表模板类,根据对象抽取共性定义的类,统一称为javabean
定义javabean的规范:
1.类是公共的
2.至少提供一个空构造,按需提供带参
3.属性私有化
4.公共的访问方式