抽象类和接口
一.final关键字
final 表示最终的,终态。可以用来修饰变量 方法 类
1.修饰变量
被final修饰的变量,称为常量。常量的值是不可修改的。
一般和static 一起使用 称为静态常量,就是常量
常量命名规范: 所有字母全部大写,多个单词之间用下划线连接 USER_NAME
2.修饰方法
被final修饰的方法,不能被重写
3.修饰类
被final修饰的类,不能被继承,不能有子类.
4.修饰参数
被final修饰的参数,不能修改,只能读取
二.抽象类
1.概念
被abstract 修饰的类,称为抽象类
- 定义 方式 public abstract class 类名{ }
- 抽象类不能被实例化, 不能用new 创建对象,只能被继承
被absract 修饰方法,称为抽象方法
- 定义 方式: public abstract 返回类型 方法(){ }
- 抽象方法只有声明,没有具体的实现,没有方法体
2.特性
- 子类继承抽象类后,必须实现 抽象类中的抽象方法。
- 抽象类中可以有抽象方法,也可以没有抽象方法
- 含有抽象方法的类,必须为抽象类
三.接口
如果一个抽象类中只有抽象方法,则可以定义为接口 interface
1.概念
本质上,接口就是特殊的抽象类,接口中只能有常量和抽象方法。
2.用法
2.1定义接口
语法:
public interface 接口名{
// 常量;
// 抽象方法;
}
接口中的属性,默认被 public static final 修饰。
接口中的方法,默认 public abstract 修饰。
接口也不能实例化
2.2实现接口
语法:
public class 类名 implements 接口名{
}
实现接口的类,称为实现类
实现类必须实现接口中所有的抽象方法,并且方法必须使用public修饰
如果不实现接口中的方法,那么该实现类可以继续为一个抽象类
2.3 接口特征
-
类与类
继承 class 子类 extends 父类
-
类与接口
一个类 可以继承 另一个类,可以实现多个接口
class 类 extends 父类 implements 接口1,接口2
-
接口与接口
一个接口可以继承多个接口
interface 接口名 extends 接口1,接口2
2.4作用
接口的作用:
- 可以间接实现多继承
- 通过接口定义规范和标准
- 将标准的制定和实现分开
面向接口编程,提高扩展性
2.5 接口与抽象类的比较–面试
相同点:
- 都可以包含抽象方法
- 都不能实例化
不同点:
- 抽象类中可以有普通方法,接口中默认都是抽象的
- 接口中不能有构造方法,抽象类中可以有构造方法、
- 接口支持多继承,抽象类是单一继承。