Java中的抽象类与接口

抽象类
java

抽象类是由abstract修饰的类,而且必定包含有用abstract修饰的方法,也就是抽象方法,当一个类中有抽象方法的时候,这个类必定要被定义成抽象类。spa

抽象类中也能够没有抽象方法。设计

抽象类除了有抽象方法,其它的与普通的类没什么区别。orm

当抽象类做为父类被子类继承时,子类必须实现抽象类父类中的抽象方法,若是没实现的话,则必须将子类也定义为抽象类,父类不为抽象类时,子类也能够为抽象类。对象

抽象类不能用new操做符来初始化,可是能够定义它的构造方法
继承


接口
接口

接口是一种与类类似的结构,只包含常量和抽象方法,即接口中出现的数据是常量,默认为public static final定义的,方法默认为abstract,能够不写。ip

一个接口能够扩展一个或多个接口。字符串

一个类只能继承一个类,可是能实现多个接口,从而实现多继承。it

接口也不能用new操做符来初始化。


区别


变量 构造方法 方法
抽象类 无限制 子类经过构造方法链调用构造方法,抽象类不能用new操做符实例化 无限制
接口

全部的变量必须

是public static final的

没有构造方法,接口不能用new操做符实例化 全部的方法必须是公共的抽象实例方法


设计指南

抽象类和接口都是用来明确多个对象的共同特征的。通常来讲,详细描述父子关系的强是关系(strong is-a relationship)应该用类建模。例如,由于公历是一种日历,因此,类java.util.GregorianCalendar和java.util.Calendar是用类继承建模的。弱是关系(weak is-a relationship)也称为类属关系(is-kind-of relationship),它代表对象拥有某种属性。弱是关系能够用接口来建模。例如,全部的字符串都是可比较的,所以,String类实现Comparable接口。

相关文章
相关标签/搜索