抽象类与接口的共同点
(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
不同点:
接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。
接口都是抽象方法。默认有abstract。(java 1.8,接口中可以有方法体。default类型的方法。)
接口中变量必须被赋予值,前面默认都有 final static ,即常量。
抽象类中的变量可以修改。
抽象类可以有构造函数,抽象方法,实例方法。
)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。
特性
继承的抽象类或者接口中的抽象方法必须被实现,否则还是抽象类。
子类的访问修饰符要大于等于父类。
接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色。