5.1 抽象类
Java语言中,父类的某些方法不包括任何逻辑,并且需要由子类重写。在这种情况下,用abstract关键字来修饰一个类时,这个类叫做抽象类,用abstract关键字来修饰一个方法时,这个方法叫做抽象方法。
抽象方法只需声明,无需实现;抽象类不能被实例化,必须通过抽象类的子类来间接实现;抽象类不一定要包含抽象方法,若类中包含了抽象方法,则该类必须被定义为抽象类。
抽象类可以包含非抽象方法。继承抽象类的类必须实现抽象类的抽象方法,否则,也必须定义成抽象类。即使抽象类中无抽象方法,也需要被继承后才能创建其子类的实例。
5.2 接口
接口是抽象类的一种,只包含常量和方法的定义,而没有变量和方法的实现,且其方法都是抽象方法。它的用处体现在下面几个方面:
1.接口的定义
(1). 通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系
(2). 通过接口指明多个类需要实现的方法
(3). 通过接口了解对象的交互界面,而无须了解对象所对应的类
在声明接口的成员时不被允许使用一些声明修饰语,比如不能在接口的成员声明中使用transient、volatile 或者 synchronized。同样,不能在声明接口成员的时候使用private和protected修饰语
2.接口的实现
在类的声明中用implements子句来表示一个类实现某个接口,在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有抽象方法。一个类可以实现多个接口,在implements子句中用逗号分开。
3.接口与抽象类、类的区别
(1). 接口中不能有非抽象类的方法,但抽象类中可以有
(2). 一个类能实现多个接口,但只能有一个父类
(3). 接口也可以继承,与类不同,接口可以继承多个接口
(4). 无关的类也可以实现同一接口
5.3 包
包是一组相关的类和接口的集合。
包不仅使得类的组织和管理更容易,也消除了不同组的类中潜在的类名冲突
原文地址:https://www.cnblogs.com/daijux/p/12016966.html