在面向对象的概念中,全部的对象都是经过类来描绘的,可是反过来,并非全部的类都是用来描绘对象的,若是一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。java
抽象类除了不能实例化对象以外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类同样。编程
因为抽象类不能实例化对象,因此抽象类必须被继承,才能被使用。也是由于这个缘由,一般在设计阶段决定要不要设计抽象类。编程语言
父类包含了子类集合的常见的方法,可是因为父类自己是抽象的,因此不能使用这些方法。设计
在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却能够实现多个接口。指针
(1)定义对象
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口一般以interface来声明。一个类经过继承接口的方式,从而来继承接口的抽象方法。继承
接口并非类,编写接口的方式和类很类似,可是它们属于不一样的概念。类描述对象的属性和方法。接口则包含类要实现的方法。接口
除非实现接口的类是抽象类,不然该类要定义接口中的全部方法。编译
接口没法被实例化,可是能够被实现。一个实现接口的类,必须实现接口内所描述的全部方法,不然就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们能够成为一个空指针,或是被绑定在一个以此接口实现的对象。class
[可见度] interface 接口名称 [extends 其余的类名] {
// 声明变量
// 抽象方法
}
(2)接口与类类似点:
一个接口能够有多个方法。
接口文件保存在 .java 结尾的文件中,文件名使用接口名。
接口的字节码文件保存在 .class 结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
(3)接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中全部的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。
(4)接口特性
接口中每个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其余修饰符都会报错)。
接口中能够含有变量,可是接口中的变量会被隐式的指定为 public static final 变量(而且只能是 public,用 private 修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化
(1)接口只有定义,不能有方法的实现;而抽象类能够有定义与实现
(2)接口关键字为implements,继承抽象类的关键字为extends;一个类实现多个接口,一个类只能继承一个抽象类
(3)接口强调特定功能的实现,抽象类强调所属关系
(4)接口定义变量默认为public、static、final,只能有静态的不被修改的数据成员,必须赋初值,全部成员方法都是public、abstract的,只能被这关键字修饰;抽象类能够有本身的数据成员变量,也可有非抽象成员方法,抽象类成员变量默认为default,也能够被private、protected、public,可在子类从新定义与赋值,抽象类抽象方法不能被private、static、synchronized和native修饰,方法必须以分好结尾,不带花括号。
(5)接口被用于实现经常使用功能,,方便维护;抽象类倾向于充当公共类,不便修改