接口和抽象类区别

抽象类:
类:不能创建对象,但是可以声明对象的引用
方法:只有定义,没有实现,必须为public或者protected,缺省情况下默认为public。
1.如果一个类中有抽象方法,则该类必须用abstract修饰
2.子类继承一个抽象类,如果子类不希望继续抽象,那么就必须实现父类的抽象方法
3.抽象类其实也有构造方法,但是在子类中可以使用super()调用。
4.抽象类中可以没有抽象方法,可以拥有非抽象方法。

接口:
接口中可以含有变量和方法。变量会被隐式的指定为public static final变量,且只能是public static final变量;而方法会被隐式的指定为public abstract方法。
接口中所有的方法不能具体的实现,也就是说,接口中的方法必须都是抽象方法。

区别:
1、抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法;
2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3、抽象类中可以有静态代码块和静态方法,而接口中不能含有静态代码块和静态方法;
4、一个类只能继承一个抽象类,缺可以实现多个接口。

设计:
抽象类是对一种事务的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但接口却是对类局部(行为)进行抽象。可以说,抽象是一个“是不是”的关系,而接口实现则是“有没有”的关系,如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系。

posted @ 2017-05-14 11:25  Bob.Xie  阅读(135)  评论(0编辑  收藏  举报