抽象类
- 什么是抽象类?
- 类和类之间具有共同特征,把他们的共同特征提取出来,就是抽象类。
- 类本身就是不存在的,所以抽象类无法创建对象《无法实例化,只能被继承》
- 抽象类就是让人继承的
- 抽象类属于什么类型?
- 抽象类属于引用数据类型
- 抽象类的定义?
[修饰符列表] abstract class 类名{
} - 抽象类是无法被实例化的,无法创建对象,只能被继承,因此abstract不能和final连用
- 抽象类的子类也可以是抽象类
- 抽象类虽然不能被实例化,但是有构造方法,用于被子类调用
- 抽象方法
- 定义: [修饰符列表] abstract 返回值类型 方法名(形参);
- 注意:抽象方法没有方法体,就是让类去继承、实现他的
- 抽象类中可以有抽象方法,也可以没有,但抽象方法不能出现在普通类里
- ***继承抽象类的实体类必须要实现抽象类的所有抽象方法
- 面试题
java语言中凡是没有方法体的方法都是抽象方法?- 错误,Object类中就有很多方法都没有方法体,都是以";"结尾的,但他们都不是抽象方法
- 例如:private static native void registerNatives();
接口
基础语法
- 接口也是一种"引用数据类型",编译之后也是一个class字节码文件
- 接口是完全抽象的
- 接口的定义: [修饰符列表] interface 接口名{}
- 接口支持多继承
- 接口中只有常量和是抽象方法
- 接口的所有方法都是公开的,并且public abstract可以省略不写
- 接口中常量的public static final 也可以省略不写
- 接口中方法不能有方法体
- 一个非抽象的类实现接口的时候必须将接口中所有方法加以实现
- 一个类可以实现多个接口
- extends和implements可以共存,extends在前,implements在后
- 使用接口写代码的时候可以使用多态
在开发中的作用
总结一句话:“解耦合”
- 面向接口编程,可以降低程序耦合度,提高程序扩展力,符合ocp开发原则。
- 接口的使用离不开多态的机制