在看Netty中NioEventLoop的UML图时,感觉非常复杂,如下图所示: 找不到重点,找不到主线,此时内心生无可恋。
从而,激发出困扰了我很久的一个问题:到底继承与接口 啥关系?
这个问题,前几天也请教过同事,也并没有说出什么关键点来。
然后,对着此图沉思了良久,终于悟出一点自己的见解:【以下仅供参考】
1、继承,是一种血缘关系,是一个家族;是活的(感觉有生命特性);一个类只能有一个父类,可以直接调用/继承父类的API,也可以覆写父类的API
2、接口,是一个工具,是一种辅助功能的体现;是死的(无生命特性,仅仅是一个工具而已); 如一个类实现了接口,就好像一个人,穿上钢铁侠的衣服,能力大增;但它的本质还是一个人; 或者说,一个人,具有了车,飞机之后,这个人的行驶速度极大提高;但,本质上还是一个人;这些钢铁侠的衣服、车、飞机、手机就是一个工具,一个具体组件,模块,或者说插件而已,是一种额外的辅助类的功能、或者认为是辅助人的功能而已,并没有改变人的根本属性。因此,类也是,同一个类可以同时实现不同的接口(如可以有车,或者穿钢铁侠的衣服)但是, 本质上并没有变,只是增加/提高了额外的行为能力
- 一句话总结:
血缘关系的表现;
额外工具。
此时,重新对上面的图,进行修改,去掉接口(也就是去掉额外的功能,看本质),如下所示: 可以看出来,应该具有3条主线,然后再具体分析。
- 感想:
当我们学一样东西时,最好有自己的想法,见解;
单纯的依赖别人的总结可能不能很好的理解;
用自己的语言,说出来,可能才是最好的。
这个过程可能需要翻阅大量的资料来总结整理,
一旦成功,可以记忆很长时间。
能不能给别人解释清楚,来验证你到底有没有真正掌握住。
转载于:https://blog.51cto.com/xingej/1972496