抽象类(abrstract class)与接口(interface)有何异同

时间:2019-05-20 13:51:25   收藏:0   阅读:167

抽象类:如果一个类中包含抽象方法(用abstract修饰的方法),那么这个类就是抽象类

接口:是指一个方法的集合,接口中的所有方法都没有方法体

相同点:

1)都不能被实例化

2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化

 

不同点:

1)接口只有定义,其方法不能再接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类既可以有定义也可以有实现

2)接口需要实现(implements),抽象类只能被继承(extends)。一个类可以实现多个接口,但只能继承一个抽象类,因此使用接口可以间接地达到

多重继承的目的

3)接口中的成员变量默认为public static final,表示静态、不能被修改的,而且必须给其赋初值,其方法会被隐式地指定为public abstract方法且只能是public abstract方法

抽象类可以有各种类型的成员变量,默认为default(本包可见),也可以被定义为private,protected和public

4)接口被运用于实现比较常用的功能,便于日后维护或者添加删除方法,而抽象类更倾向于充当公共类的角色,不适用于日后重新对里面的代码进行修改

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!