1.继承的好处:代码复用+基类统一管理
1.继承的坏处:继承破坏封装
子类要复写(override)基类的方法,需要了解基类是怎么实现的,同样基类要修改也要知道子类做了什么,修改后是否会影响,所以
相当于继承破坏了封装。
继承还破坏了is-a,比如基类想要统一管理,希望大家做一样的事情,但是在子类中却复写了父类的方法,做了不一样的实现,这样就不算是统一管理了。
3.解决继承的方法:使用final,来规定不能被继承的类或方法。
4.使用接口,8之前的接口中方法都是public abstract
3.java8 \9 接口增强:接口中有了public 的静态函数和默认函数,默认函数有实现类选择是否要更改
9接口增强了,增加了private类型的静态函数和默认函数。有了更多的选择,可以代码复用。
5.抽象类:可以包含抽象方法也可以包含具体方法。抽象类和接口一样不能直接创建对象。
使用抽象类就必须要用其非抽象子类去创建对象,保证不完善的抽象类所有的功能都实现。是为了减少失误。
一般一个接口都会有一个抽象类。这个抽象类部分实现或是全部实现了接口中的全部方法。
基于单继承的机制,可以实现接口。
6.throwable分为error和exception,exception又分为IOException\sqlexception\runtimeexception
runtimeexception是程序逻辑错误
7.抽象类的直接子类如果是非抽象类,则它必须override(重写/覆盖)抽象类中的所有抽象方法,否则只能将该非抽象类转换为抽象类
子类中的抽象方法不能与父类的抽象方法同名。(因为编译的时候不知道该选择哪一个???或是再有子类实现时不知道哪一个)