Java中抽象类与接口
一、抽象类与抽象方法
-
abstract:抽象的,可以修饰类和方法
-
修饰类时,该类为抽象类,不可被实例化
-
修饰方法时,该方法为抽象方法,只有方法的声明,没有方法体
-
包含抽象方法的类,一定是抽象类,但抽象类中的方法,可以没有抽象方法
-
子类继承抽象类时,要重写父类中所有的抽象方法,否则该子类也是抽象类需要用abstract修饰,不能被实例化
二、接口
-
接口使用interface来定义
-
接口与类是两个并列的结构
-
接口中成员的定义:
3.1 JDK7即以前:只能定义全局常量和抽象方法 >全局常量:public static final,可以省略不写
>抽象方法:public abstract
3.2 JDK8:除了可以定义全局变量和抽象方法之外,还可以定义静态方法、默认方法 -
接口中不能定义构造器,意味着不能被实例化
-
接口通过类去实现(implements)的方式来使用,如果实现的类覆盖了接口中所有的抽象方法,则此类可以实例化,没有覆盖所有抽象方法,则该类为抽象类
-
类可以实现多个接口,弥补了类单继承的局限性
-
接口与接口之间可以继承,而是可以多继承
-
一个类既要继承又要实现接口时,要先继承再实现