Java中的抽象和接口
开发工具与关键技术: MVC,java
作者:汤池
撰写时间:2022/6/8
一、抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。
并且抽象类和普通类相比还多出了抽象方法。
格式:
[修饰符] abstract class 类名{
//零到多个成员变量
//零到多个构造器
//零到多个普通方法
//零到多个抽象方法
//零到多个初始化块
}
(一)、抽象方法:
抽象方法只包含一个方法名,而没有方法体,使用abstract修饰。
格式:
[修饰符] abstract 返回值类型 方法名(形参列表);
修饰符 (public protected private)三选一
(二)、抽象类总结:
1. 抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。
2. 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。
3. 抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。
4. 抽象类的构造器不能用于创建实例,主要是用于被其子类调用。
5. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
6. abstract static不能同时修饰一个方法
7、抽象类可以有主函数,可以执行。
二、接口 interface
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。
一个类通过实现接口的方式,从而来实现接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
(一)、接口定义
[public] interface InterfaceOne [extends fatherInterface1,fatherInterface2...]{
[public] [static] [final] type CONSTANT_NAME=Value;//定义常量
//[public] [static] [final]可以不写,一般也不用写。 编译时自动为接口里定义的成员变量增加public static final修饰符
[public] [abstract] returnType methodName(参数列表);//声明方法
//[public] [abstract] 可以不用写,一般也不写。编译时自动为接口里定义的方法添加public abstract修饰符
}
接口有以下特性:
1、接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
2、接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
3、接口中的方法都是公有的。
4、编译时自动为接口里定义的方法添加public abstract修饰符
5、Java接口里的成员变量只能是public static final共同修饰的,并且必须赋初值,可以不写public
6、static final,编译的时候会自动添加
(二)、接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
注意:JDK1.8+可以通过添加default关键字,不必强制实现所有方法。
Java中类可以实现多个接口
格式:
[修饰符] class 类名 [implements 接口1, 接口2, 接口3..., ...]
{
}