接口
  一个几口是一个包含常量和抽象方法的集合,它不能被实例化。
  Comparable接口
  Java标准类库既包含接口也包含类。Comparable接口是定义在java.lang中的,它仅仅包含一个方法,也是compareTo方法,
  Ob1.compareTo(Ob2);
  如果Ob1小于Ob2返回负;
  如果Ob1等于Ob2返回0;
  如果Ob1大于Ob2返回正;
  Iterator接口
  Iterator接口是作为Java标准类库的一部分而定义的另一接口。它由表示某个对象集合的类使用。
  Iterator接口中的两个主要方法是hasNext(返回一个布尔结果)和next(返回一个对象)。
  继承
  类确立了对象的特征和行为,但是并不为变量保留内存空间(除非这些变量被声明为static)。类是计划,对象是该计划的具体化。
  派生类
  继承是通过某个现有类派生出一个新类的过程。用来派生新类的初始类称为父类、超类或者基类;派生类则被称为子类或者次类。extends表示新类从某个现有类中派生而来。
  继承在所有的父类和子类之间创建了一种is-a关系。
  protected修饰符
  protected提供了允许继承的佳可能封装。
  super引用
  super调用父类构造方法。super应用同样可以用来引用父类的成员变量和方法。
  重写方法
  使用final修饰符定义的方法,子类是不能重载的。
  类的层次结构
  相同父类的两个子类称为兄弟类。
  Object类
  在Java语言中所有的类都是直接或者间接的由Object类派生来的。
  抽象类
  抽象类不能被实例化。它表示的是一个概念,其他类可以在这个概念之上创建自己的定义。它通常还有一个或者多个没有定义的抽象方法。
  一个抽象类派生出的某个类必须重载其父类的所有抽象方法,否则该派生类也将被视为抽象类。
  将某个抽象方法修饰为final和static将会出现矛盾。因此不要出现这方面的错误。
  接口的层次结构
  接口之间的继承和类之间的继承是一样的。不过接口的所有成员都是public的。
  接口继承,子接口可以继承父接口的所有抽象方法和常量。
  多态性
  多态性是指具有许多形态。多态引用是在不同时间点,可以指向不同对象类型的应用变量。动态绑定的实现是多态引用在某个时刻引用变量所引用的对象来决定。
  类层次结构的多态引用
  方法继承的多态引用
  基于接口的多态引用
  异常
  异常是定义了某个非正常或者错误情形的对象。异常由程序或者运行时环境抛出,如果需要的话我们可以将其捕获并对其进行恰当的处理。
  错误与异常类似,不过错误通常表示的是某种不可恢复的情形,且不必去捕获它。
  异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。
  Java异常类层次结构图:

  注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。
  运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
  运行时异常的特点是Java编译器不会检查它,也是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
  非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。