接口和抽象的区别:
相同点:都位于继承的顶端,用于被其他类实现或继承
都不能直接实例化对象(new对象)
都包含抽象方法,其子类都必须覆盖这些抽象方法
区别: 抽象类为部分方法提供实现,避免了子类重复实现这些方法,提高代码的重用性;接口只能包含抽象方法
一个类只能继承一个父类,却可以实现多个接口;(接口弥补啦java的单继承)
抽象类时这个事物中应该有的功能,is.a关系
而接口是这个事物的额外功能;like.a关系
二者的选用:优先选用接口,尽量少用抽象;
需要定义子类的行为,又要为子类提供共性功能时猜选用抽象类
相同点:都位于继承的顶端,用于被其他类实现或继承
都不能直接实例化对象(new对象)
都包含抽象方法,其子类都必须覆盖这些抽象方法
区别: 抽象类为部分方法提供实现,避免了子类重复实现这些方法,提高代码的重用性;接口只能包含抽象方法
一个类只能继承一个父类,却可以实现多个接口;(接口弥补啦java的单继承)
抽象类时这个事物中应该有的功能,is.a关系
而接口是这个事物的额外功能;like.a关系
二者的选用:优先选用接口,尽量少用抽象;
需要定义子类的行为,又要为子类提供共性功能时猜选用抽象类