java基础复习(七)

java基础第七天

代码块 在java中,使用{}括起来的代码被称为代码块

代码块分类:局部代码块、构造代码块,静态代码块,同步代码块(多线程讲解)

局部代码块

限定变量的生命周期

构造代码块

构造代码块:每创建一次对象就会执行一次,优先于构造函数执行。多个构造方法中相同的代码存放在一起,又叫初始化代码块。

静态代码块

随着类的加载而加载,且只执行一次,作用是用来给类进行初始化的,一般用来加载驱动。

静态代码块优先于主方法执行。

代码块面试题

主要考察代码块的执行顺序:静态代码块,优先于主方法执行。构造代码块优先于构造方法执行。

继承(extends)

让类与类之间产生关系-子父类

横向的扩展和纵向的扩展

继承的好处和弊端

好处:

提高代码的复用性

提高了代码的维护性

让类与类之间产生了关系,是多态的前提。

继承的弊端

类的耦合性增强了 比如:父类增加了一些什么东西,子类也就增加了

开发的原则:

高内聚、低耦合

耦合:类与类的关系

内聚:就是自己完成某件事情的能力。

Java类中的继承

java只支持单继承,不支持多继承。有些语言是支持多继承的。

java支持多层继承

java中类的继承特点

如果想用这个体系的所有功能用最底层的类创建对象

如果想看这个体系的共性功能,看最顶层的类。

继承的注意事项

子类只能继承父类所有非私有化的成员(成员方法和成员变量)

子类不能继承父类的构造犯法,但是可以通过super关键字去访问父类构造方法。

(构造方法的类名也就是构造方法的名字)

不要为了部分功能而去继承。

super------意味着 子类访问父类 this--------对象和类的关系(既可以调用本类,也可以调用父类(相当于继承下来了))

继承其实是一种is a的关系

继承中成员变量的关系

子父类出现同名变量 -- 就近原则-子类中有就不用父类的了

this和super和都代表什么

this:代表当前对象的引用,谁来调用我,我就代表谁。

super:代表当前对象父类的引用

this和super的使用区别:

a:调用成员变量

this.成员变量 调用本类的成员变量,也可以调用父类的成员变量

super.成员变量 调用父类的成员变量

b:调用构造方法

this()调用本类的构造方法

super()调用父类的构造方法

c:调用成员 方法

this.成员方法 调用本类的成员方法,也可以调用父类的方法

super.成员方法 调用父类的成员方法

子类中所有的构造方法默认都会访问父类的空参构造方法

为什么?

因为子类会继承父类中的数据,可能还会使用父类的数据。

所以,子类初始化之前,一定要先完成父类数据的初始化。

其实,每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类

父类没有无参构造方法,子类怎么办?

super解决

在子类中super父类的有参构造方法,并带上参数,这就是解决这类问题的。super可以选择走有参构造。

this解决

注意事项

super()或this()必须出现在构造方法的第一条语句。构造方法那种必须写前面,就用super调用方法不一定需要。

继承中的面试题

主要是一个走的流程的问题,从哪开始到哪结束,哪里容易被忽视。

都可以利用画堆栈图之类的来理解。

继承中成员方法的关系

不同名方法

同名方法-----重写 子类的方法名与父类中某个一样的方法 返回值类型也是一样的。

当子类需要父类的功能,而功能主体子类有自己特定内容是,可以重写父类中的方法。

方法重写的注意事项

父类中私有方法不能被重写

子类重写父类方法时,访问权限不能更低,最好就是一致。

父类静态方法,子类也必须通过静态方法重写。----静态只能覆盖静态-其实不是重写-多态讲解。

方法重写面试题

override和overload的区别?

overload能改变返回值类型,只看参数列表。

final关键字

final概述

final修饰特点

修饰类,类不能被继承(String类)

修饰变量,变量就变成了常量,只能被赋值一次

修饰方法,方法不能被重写

基本类型,是值不能被改变

引用类型,是地址值不能被改变,对象中的属性可以改变。

弹栈 了解一下

final修饰变量的初始化实际

显示初始化

在对象构造完毕前即可。

本文链接:

https://heyzen.club/index.php/J/219.html
1 + 3 =
快来做第一个评论的人吧~