1、抽象类:抽象类中可以有抽象方法也可以有非抽象方法,抽象方法是只定义了方法而不去实现它,与接口不同,接口中所有的方法都是抽象的。
特性:
a、抽象类用于创建一个基本行为的实现类,且可以为该类声明方法,而不用去实现它。
b、抽象类中不能定义抽象构造方法和抽象构造静态方法。
c、抽象类不能直接实例化,得定义该抽象类变量然后引用其子类。
d、继承抽象类的如果不实现抽象类中的所有方法,那么其子类也是抽象类。
2、接口:接口中所有的方法都必须是抽象的,在jdk1.8开始接口中可以有方法的实现了但只能是静态方法或者默认(defult)方法。多继承性可以通过实现这样的接口而获得。
特性:
a、接口中只能定义静态常量。
b、同抽象类一样,可以通过定义接口的变量将引用指向不同的接口实现类,可以通过instanceof来判断当前类是否继承了某个接口。
c、实现接口的类必须实现接口的所有类。