抽象类
用abstract
关键字修饰,抽象类与普通类的最大区别,抽象类不能被实例化,需要继承抽象类才能实例化子类。
如果一个类中包含抽象方法,那么这个类必须声明为抽象类
注意:abstarct不能修饰属性和构造器,也不能修饰私有方法、静态方法、final方法
接口
接口用interface
关键字修饰,是抽象类的延伸,在java开发中,接口通常让类去实现implement的方式去使用,jdk8之前可以看成是一个完全抽象的类
注意事项 :
jdk7及以前:只能定义全局常量(public static final)和抽象方法(public abstract)
jdk8及以后还能定义静态方法(static)和抽象方法
如果实现类没有实现接口的所有抽象方法,那么接口还是一个抽象类
区别
相同点:都不能实例化,都可以被继承,都可以包含抽象方法
不同点:
- 抽象类中有构造器,接口中没有
- 一个类不能继承多个抽象类 但是可以实现多个接口
- 接口的成员只能是public的,抽象类没有限制