代码块&&接口&&多态
代码块 【掌握】
什么是代码块
就是使用一对大括号包裹起来的代码
{}
Java中的代码块分类(只有这4种)
局部代码块
构造代码块
静态代码块
同步代码块(多线程讲解)
每种代码块的使用
局部代码块
格式:
{
}
位置:位于方法中
特点:定义的变量只能代码块中使用,出了大括号就无法使用
作用:就是限制变量的作用域,让变量使用完及早释放,节省内存
构造代码块
格式:
{
}
位置:位于类中方法外
特点:每一次调用构造方法的时候,都会执行一次构造代码块,而且是先执行
本类构造代码块先于本类构造方法执行
作用:抽取多个构造方法中的共性代码块
静态代码块
格式:
static{
}
位置:类中方法外
特点:随着类的加载而执行,执行时机早 -- 验证一个类是否被加载,什么时候加载
类的加载只会加载一次,静态代码块也只会执行一次 --一次性的操作,比如说读取配置文件
先于构造代码块执行
先于本类的main方法执行
作用:执行一些很早且一次性的操作,比如一些初始化操作,读取配置文件,加载数据库驱动等
接口 【掌握】
什么是接口
就是使用interface关键字定义的一种特殊的类
它比抽象类更加抽象,因为其中的方法只能是抽象方法(JDK8以前)
接口的好处
1、定义规则
2、提高程序的扩展性
接口定义格式
public interface 接口名 {
}
接口使用格式
1、类实现该接口
public class 类名 implements 接口名 {
}
2、接口继承接口
接口的特点
1、接口不能创建对象(实例化)
2、类去实现接口的时候,要么重写(实现)其中所有的抽象方法,要么这个类定义为抽象类
接口的成员的特点
1、变量
成员变量:不能有
常量:可以有,有默认修饰符:public static final
2、构造方法
没有构造方法
构造方法的作用:
(1)创建对象(成员变量赋值)
(2)子类构造方法调用
3、成员方法
抽象方法:可以有,有默认修饰符:public abstract
非抽象方法:可以有(JDK8及其之后)
接口的升级(接口新特性)
默认方法(JDK8)
格式:
public default 返回值类型 方法名(参数列表){
}
特点
1、可以被实现类所继承
2、不要求强制重写,也可以重写
作用
解决接口的升级问题
静态方法(JDK8)
格式:
public static 返回值类型 方法名(参数列表){
}
特点
1、不能被实现类所继承,不能创建实现类对象的方法调用,也不能通过实现类类名.方式调用
2、只能通过接口名.的方式进行调用
作用
解决接口的升级问题
私有方法(JDK9)
格式:
// 私有默认方法
private 返回值类型 方法名(参数列表){
}
// 私有静态方法
private static 返回值类型 方法名(参数列表){
}
特点
1、不能被实现类继承,也不能为外类使用
2、只能通过在接口内部通过非抽象的方法(默认、静态和私有方法)进行调用
作用
抽取接口内部默认方法和静态方法的共性代码
注:
接口的升级,只是针对方法进行的,对成员变量和构造方法没有改变
这些方法都是非抽象方法,有方法体
以后我们在接口主要还是定义抽象的方法,极少定义非抽象方法
但是我们在使用的过程中,可能会使用JDK提供的一些接口,其中定义这些类型的非抽象方法
我们只要会使用这些方法即可。
类和接口之间的关系
类和类之间
extends,继承关系,只能单继承,不支持多继承,可以多层继承
类和接口之间
implements,实现关系,可以单实现,可以多实现,可以多层实现
一个类可以在继承一个类的同时,实现多个接口
class A extends B implments C,D {
}
接口和接口之间
extends,继承关系,可以单继承,多继承和多层继承
接口和抽象类的区别 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ahir's Blog!
评论
GitalkDisqusjs