正文之前
其实今天并没有学什么, 因为醒来的时候已经 11 点多了, 看一会小说出去吃饭, 吃完饭已经下午一点, 然后看小说到晚上九点多. 九点多才开始看书, 我很愧疚. 但是每天的打卡还是要继续, 索性就干脆写点《Java 编程思想》的内容吧!
图文无关
正文
第一点: 接口的含义:
万事万物之间总存在着那么一些共性. 然后我们利用这些共性就可以沟通不同种类的实例. 这个共性就是接口, 它并不能实例化, 只是一些属性的集合, 所以下面图片中才有 Dummy 方法这种说法. 而我更喜欢叫他抽象的类, 或者是纯虚 XX.
第二点: 接口的使用方法: 有方法但不能有方法体
接口就是把诸多含有共性的东西组合起来. 但是这些东西只可意会, 不能言传. 也就是说你并不能详细的定义. 因为如果你详细的定义了, 那就成了基类, 接口的特性也就消失了. 继承子接口的所有方法必须重写, 除非你把这个累定义为抽象类. 抽象类等同于 C++ 的纯虚函数.
第三点: 接口的访问控制
接口默认是 public 的, 不能只是在本包内使用, 很明显, 如果有别的地方继承了它, 如果不能使用, 那就很尴尬了.. 如果只在本包内使用的话, 那么就违背了他的初衷. 接口很明显的意思就是对很多地方开放. 所以默认都是 public.
第四点: Java 的多重继承实现:
加了中的多重继承实现依赖于接口机制. 也就是一个实际的子类可以被允许含有诸多接口的特性. 这个在基类继承中是不被允许的, 因为 Java 规定了一个子类只能继承自一个父类. 但是并没有限定接口可以继承多少个, 所以这就是 Java 中多重继承的由来. 另外, 在多重继承时, 可以同时继承父类, 那么父类所带来的方法体的实现, 可以在接口的方法实现中直接复用. 你可以这么理解: 当一个子类, 同时继承来自父类和接口的性质的时候, 优先继承父类也就是说把父类的所有方法全部先定义一遍. 然后再继承来自接口的性质. 如果父类中与接口有同名方法. 那么就相当于已经定义过一次. 可以不用在重复定义了. 当然, 如果你要重写, 那直接定义即可.
第五点: 接口的继承与扩展!
接口的继承和普通类的继承没什么两样. 只是子接口同样不能定义方法体. 所以接口的继承等同于是接口的扩展. 使用子接口就等于是使用扩展之后的接口.
正文之后
结束了. 今天结束了.
来源: http://www.jianshu.com/p/a37fc319043e