一、代码块
1、在Java中,使用{}括起来的代码被称为代码块。
2、分类(根据位置和声明不同)
A:局部代码块
* 在方法中出现;
* 用于限定变量生命周期,及早释放变量,提高内存利用率
B:构造代码块 (初始化块)
* 在类中方法外出现;
* 多个构造方法方法中相同的代码存放到一起,每个构造方法执行前,都首先执行构造代码块
C:静态代码块
* 在类中方法外出现,并加上static修饰;
* 用于给类进行初始化,在加载的时候就执行,并且只执行一次。
* 一般用于加载驱动
3、执行顺序
静态代码块 --> 构造代码块 --> 构造方法
-----------------------------------------------------------------------------------
二、继承【掌握】
1、让类与类之间产生子父类关系,这个关系就叫继承。
2、继承的好处
A:提高了代码的复用性
B:提高了代码的维护性
C:让类与类之间产生了关系,是多态的前提
3、继承的弊端
A:类的耦合性增强了。
开发原则:高内聚,低耦合
耦合:类与类之间的关系(粘性,一个类的改变将会影响到其它相关类)
内聚:自己完成某件事的能力
4、特点
A:Java只支持单继承(一个儿子只能有一个爹)
B:Java支持多层(重)继承 (继承体系)
5、注意事项
A:子类只能继承父类所有非私有的成员(成员方法和成员变量)
B:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
C:不要为了部分功能而去继承
6、什么时候用继承
类与类之间体现的是一种关系:"is a"
Person
| -- Student
| -- Teacher
水果
| -- 苹果
| -- 香蕉
7、继承中成员变量的关系
A:不同名变量
B:同名变量
a:先从子类的局部范围找
b:再从子类的成员范围找
c:最后从父类的成员范围找
8、this和super
this:代表当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
应用:
A:调用成员变量
* this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
* super.成员变量 调用父类的成员变量
B:调用构造方法
* this(...) 调用本类的构造方法
* super(...) 调用父类的构造方法
C:调用成员方法
* this.成员方法 调用本类的成员方法,也可以调用父类的方法
* super.成员方法 调用父类的成员方法
9、继承中构造方法的关系
子类中所有的构造方法默认都会访问父类中空参数的构造方法
为什么?
(1)
因为子类会继承父类中的数据,可能还会使用父类的数据。
所以,子类初始化之前,一定要先完成父类数据的初始化。
其实,每一个构造方法的第一条语句默认都是:super();
Object类最顶层的父类。
(2)
A:子类继承父类,子类是为了使用父类的数据(成员变量,成员方法)
B:所以,在构造子类对象的时候,必须先初始化父类的数据
C:所以,子类的构造方法的第一句,默认是super();
但是,万一父类没有空参构造,怎么办?
A: 通过super(.., ..)调用父类的有参构造方法。
B:通过this(.., ..)调用本来的其它的有参构造方法,再通过本类的其它的有参构造方法中的super(.., ..)初始化父类的数据
注意:
构造方法的第一句,不是super(),就是this(),只能有一个语句(互斥关系)
注意事项
A:如果父类没有无参构造方法,子类怎么办?
a:super(...)解决
b:this(...)解决
B:super(...)和this(...)必须出现在构造方法的第一条语句上
10、继承中成员方法关系
A:不同名方法
B:同名方法
a:现在子类中找,有就使用
b:如果子类中没有,再在父类中找,有就使用
c:如果都找不到,就报错
-----------------------------------------------------------------------------------
三、方法重写【掌握】
1、什么是方法重写
在子父类中,方法声明(修饰符,返回值,方法名,参数列表)相同的情况。
2、为什么要有方法重写
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。
3、注意事项
A:父类中私有方法不能被重写
* 因为父类私有方法子类根本就无法继承
B:子类重写父类方法时,访问权限不能更低
* 最好就一致
C:父类静态方法,子类也必须通过静态方法进行重写
* 其实这个算不上方法重写,但是现象确实如此,
至于为什么算不上方法重写,多态中再讲解(静态只能覆盖静态)
4、面试题
Override和Overload的区别?
Overload能改变返回值类型吗?
-----------------------------------------------------------------------------------
四、final关键字【掌握】
1、是一个关键字,可以用于修饰类,成员变量,成员方法。
2、特点:
它修饰的类不能被继承。
它修饰的成员变量是一个常量。
它修饰的成员方法是不能被子类重写的。 |
|