在面向对象中,所有的对象都是由类进行描绘实现的,但是并不是所有的类都是用来描绘对象的,当一个类中没有包含足够的信息描绘一个具体的对象。我们把这种类定义为一个抽象类。
(1)不能用来实例化对象,通过被继承来使用。
(2)一个类只能继承一个抽象类。
(3)抽象类的修饰符不能是private。
(4)抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类。
(5)构造方法、类方法不能声明为抽象方法。
(6)抽象类的子类必须实现抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
接口指供别人调用的方法。
注意:(1)接口中所有方法不能有具体的实现,即接口中的所有方法都是抽象方法。一般情况下不在接口中定义变量。
(2)在抽象类可以包括一个或多个抽象方法。接口中所有的方法必须都是抽象的。不能有方法体。接口规定一个方法做什么,而不规定如何做。
(3) 接口中声明的成员变量默认都是public static final的,必须显示的初始化。因而在常量声明中可以省略这些修饰符。是若干常量和抽象方法的集合。
(1)接口中只定义抽象方法,这些方法默认都是public abstract。在方法声明中可以省略这些修饰符。
(2)在接口中定义实例变量,非抽象实例方法以及静态方法都不行。
(3)接口中没有构造方法,也不能被实例化。
(4)一个接口不能实现另一个接口,但是可以多继承其他接口。
(5)接口必须通过类来实现它的抽象方法。
(6)如果一个类不能实现完接口中的抽象方法,那么这个类我们应该设计为抽象类。
(7)不允许创建接口的实例,但是允许定义接口类型的引用变量引用实现该接口的类的实例。
实现Comparable接口中的抽象方法compareTo();
实现Comparator接口中的抽象方法compare();
接口中的方法被隐式指定为public abstract
接口中的变量被隐式指定为public static final