1. 面向对象查漏补缺
1.1. this关键字(重点掌握)
什么是this:表示当前对象
this主要存在于两个位置:
- 在 构造器 中:表示当前被创建的对象
- 在 方法中:哪一个对象调用this所在的方法,此时this就表示哪一个对象
测试代码:
运行测试:
什么时候需要使用this:
- 解决 局部变量 和成员变量之间的二义性,此时必须使用
- 同一个类中非 static 方法间互调(此时可以省略this,但是不建议省略)
- 构造器 重载 的互调(看懂即可)
1.2. super关键字(重点掌握)
什么是super:
this:表示当前对象,谁调用this所在的方法,this就是哪一个对象
super:当前对象的父类对象
在创建子类对象时,在子类构造器的第一行会先调用父类的构造器。
什么时候使用super:
- 在子类方法中,调用父类被覆盖的方法,此时必须使用super
- 在子类构造器中,调用父类构造器,此时必须使用super语句
父类代码:
子类代码:
1.3. static修饰符(掌握)
static修饰的字段和方法直接属于类,不属于该类的对象。记住:字段和方法属于谁,就让谁来调用。
- 使用static修饰的成员:属于类直接使用类名调用即可
- 没有使用static修饰的成员:属于对象必须先创建对象,再调用
注意:static方法不能使用super和this:
因为static是类级别的,super和this是对象级别的,存在类的时候不一定存在对象,也就说使用类名调用static方法时,此时可能是没有对象的。
测试代码:
是
内存分析:
static修饰的成员变量(字段),随着所在类被加载进JVM,也同时存储在方法区中,被所有对象共享。
实例成员和类成员的访问规则:
使用对象访问static方法或成员变量,底层依然使用类名访问的。
一般的,static方法访问的成员变量必须使用static修饰。
最后记住结论:
- 类 成 员:使用static修饰的字段和方法:属于类直接使用类名调用即可
- 实例成员:没有使用static修饰的字段和方法:属于对象必须先创建对象,再调用
1.4. final修饰符(掌握)
继承关系最大弊端是破坏封装,子类可以继承父类的实现细节,也可以通过方法覆盖的形式修改功能实现细节。那么怎么来限制某个类不能有子类,不能覆盖方法?——final修饰符。
final的含义是最终的,不可改变的,可以修饰类、方法、变量。
- final修饰的类:表示最终的类, 该类不能再有子类
- final修饰的方法:最终的方法,该方法不能被子类覆盖
- final修饰的变量:表示常量,该变量只能赋值一次,不能再重新赋值。
- 基本数据类型:表示的值不能改变
- 引用数据类型:所引用的地址值不能改变
本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。