之前我们详细的学习了java中的继承,java中的继承是单继承的,这样就会导致一个问题,如果一个类同时想调用另外两个类的相关内容,作为单继承是无法实现的,怎么办呢?java提供了另一种方式-接口来解决这个问题。
1、抽象
1.1 abstract关键字
注意点:
- 不可以修饰私有方法,静态方法(私有方法和静态方法都不可以被继承)
 - abstract不能用来修饰属性、构造器等结构
 - 
1.2 抽象类
JAVA接口和抽象类详解 - 掘金
被abstract修饰的类称之为抽象类。如果一个类中包含有抽象方法,那么该类一定是抽象类。但是抽象类不一定包含有抽象方法。抽象类就是为了继承而存在的,如果定义了抽象类而不去继承它,那么操作就是毫无意义的。注意点: 抽象类不能实例化对象
- 抽象类中一定有构造器,便于子类实例化的时候进行调用
 子类继承抽象类后,必须要重写抽象类中的所有抽象方法。非抽象方法可以不重写
1.3 抽象方法
抽象方法必须是
public或者protected。默认情况下是public的注意点:抽象方法只有方法的声明,但是没有方法的实现
- 包含抽象方法的一定是抽象类,但是抽象类不一定有抽象方法
 - 只有子类重写了父类的抽象方法,子类才可以实例化对象,否则子类也是抽象类
1.4 举例
IO流中的InputStream和OutputStream2、接口
Java中的继承是只支持单继承的,为了提高拓展性,提供了接口。接口是对一种行为的抽象,表示一种能力,一种规范。接口和类是两个并行的结构关键字interface成员 
- 全局常量
public static final可以省略不写 - 静态方法
public abstract可以省略 
特点 接口不可以实例化对象调用 通过类去实现接口来调用
- 当且仅当类重写了接口中的所有抽象方法,该类才可以去实例化对象
 - 如果没有,则该类为抽象类,仍然不可以实例化对象
 
多实现性 
- 一个类可以实现多个接口,比如子弹既具有攻击性,又具有飞行的能力
 - 如果需要先继承某类然后实现某个接口,则先写继承,再写实现
 
3、内部类

