泛型
泛型产生:
一般来说装载数据的容器我们都希望存储相同类型的数据
但是最早的程序处理时很难控制放入时数据的类型的。
比如数组,object【】 放任何数据都可以
所以就有了泛型的产生在编译器帮我们进行检查和约束
语法:类定义使用泛型。class Pair<K,V>{}
封装:基于权限修饰符来达到屏蔽不必要的方法和属性对外暴露(对外,只需要告诉他,提供哪些能力就可以,不需要了解具体怎么实现的,比如车,你只要会开就可以,不必知道内部怎么运行的)。
继承:子类完全继承父类的属性和方法,从而达到可复用的目的
多态:一个抽象事物的多种形态。人类--》张三、李四
抽象:
-多态:抽象的根基,也就是有多态的语法支持,才有了抽象的能力,相当于是语法层面的执行。
-抽象类:为了能让抽象更加优雅,Java语言层面给出的一个抽象更好的支持。
接口:比抽象类更加优雅,更加纯粹的抽象实现。且支持多实现。
关于接口和抽象类的使用场景:
-抽象类:适用于处理一些模板类的操作,去构建一套主干体系,描述大体框架。
接口:适用于增加一些额外的能力,非主干体系内能力。
* 举例
- 以"人"为例,描述人的时候,所有人都有一些功能的东西,比如吃饭,睡觉,走路,跑步等
- 这些最基本的抽象和定义,我觉得该使用抽象类来完成.而且也符合现实场景.
- 新来一个人时,自然是继承更加合理
- 但是有些人类的特质,比如腹有诗书气自华,绅士风范,哲思深邃,这些特点或品质并非人人都有.
- 因此这些使用用接口来定义.
- 当实例化一个人的时候,这个人(张三)必须要继承自抽象类描述的"人",以实现人的基本能力
- 但是这个人(张三)是否有一些其他的特质(腹有诗书气自华,绅士风范,哲思深邃),这个不一定.若有则实现对应的接口,没有拉到
- 注意:
+ 这里并非想说明抽象类比接口更加重要,只是想描述用它们做什么,更加合适而已
+ 其实抽象类和接口在做抽象时都可以,别说他们两个,就算是普通的类都可以,何况他们呢.
+ 还是那句话, 谁更适合, 更加优雅而已
* 建议: 多用接口.适当选取抽象类
集合: