关键字:接口、继承、多态、interface。
老师这周主要讲的是接口以及接口的一些特色,Interface关键字,has-a相较于继承的is-a,接口实现的是has-a的关系,接口所抽象出来的是共同的行为。具体介绍了comparator接口的方法。 ArrayList()实现的是Comparable接口对对象的排序。
内容:继续完善上次的大做业。
注意: 再过几回课要讲Java图形界面编程,到时候要将该系统升级为图形界面。系统的业务逻辑部分应该变化不大,变化较大的地方的是输入与输出部分。编码的时候,请不要将处理输入(System.in)与输出(System.out)的代码与某个业务处理方法绑死。
参考资料:html
使用Processon画图
做业提交结构以下:java
项目码云地址(点击后要求可直接跳到该项目首页)。
This is git
团队成员表格git
学生 | 负责任务 | 博客地址 |
---|---|---|
罗志凯 | 用户类的编写 | 博客地址 |
林裕恒 | 注册类的编写 | 博客地址 |
此次代码与上次比较,主要是添加了一个菜单页面,还有就是输入输出并非绑定在某一个类上,使代码更加灵活。其余就是本身的知识储备仍是不够的,我会继续增强。
改造前:
改造后:
编程
用抽象类的方法实现输入输出,使得程序更加灵活,不须要绑定在某一个类上。数组
只要对于一些类中具备共同行为,能够将其定义为抽象类。然而对于不一样子类中特定的方法,具体方法的实现就不须要定义为抽象类。
这个游戏中变化的是输入输出的实现上,使用抽象类的方法增长了程序的灵活性;不变的是游戏的执行功能——猜数字。
查看`Arrays.sort`的源代码能够知道,这个方法能够实现对对象数组进行各类排序,其实现方法就是依赖于`compareTo`方法。
实现了Comparable接口,这是一个内比较器,我以为它有点像C++的操做符重载,在类内部定义了一种比较方式。而Comparator接口就和C++(毕竟常常sort(v.begin, v.end(), cmp);)的差很少 了,参数是两个对象,而后对于不一样的结果返回正数、0和负数。这样的话,即便要排序的对象没有实现Comparable接口或者它的排序方式我不满意,我均可以本身使用本身的比较方法。并且还 能够定义不少的排序方法,降序、升序、随便什么序……
像计算矩形、圆形、圆柱等的周长以及面积应该声明为abstract;由于每一个的计算方法极近类似,虽然具体实现细节不一样,可是具体的功能差很少。
shape实现的抽象类更好。数据结构
面向对象以及面向父类可以使得程序看上去更加精简,另一方面也可使得整个程序更加灵活。
StudentDao接口总共有三个抽象类方法,分别是写入学生数据、读取学生数据和显示学生信息。经过boolean变量能够判断是否对学生数据写入成功。
二者实现的数据结构并不相同,StudenDaoListImpl使用的是ArrayList函数来实现的,然而StudentDaoArrayImpl所使用的是数组来实现的,可是二者仍是没有太大的差异,由于ArrayList的本 质仍是经过数组来实现的。
第一个就是相似咱们前面讲继承时提到的多态,多个子类去继承一个父类,而后能够由父类统一调用某些方法,而在运行时的时候根据具体对象的类型来调用不一样的方法,也就是用接口来实 现多态; 第二个就是合理的利用接口可以使得程序变得更加灵活,更加精简,更加针对对象; 第三提升了系统的灵活性。
以上两道题目感受基本上差很少,就放到一块儿说了吧。 接口从更深层次的方面来理解,应是定义与实现的分离。接口自己反映了系统设计人员对系统的抽象理解。接口应有两类:第一类是对总体的抽象,它可对应为一个抽象体;第二类是对某一 方面的抽象,即造成一个抽象面; 那么面向接口既然这么好,其有什么好处呢。接下来就讲一下面向接口的好处:第一个就是相似咱们前面讲继承时提到的多态,多个子类去继承一个父类,而后能够由父类统一调用某些方 法,而在运行时的时候根据具体对象的类型来调用不一样的方法,也就是用接口来实现多态;第二个就是合理的利用接口可以使得程序变得更加灵活,更加精简,更加针对对象;第三提升了系 统的灵活性。
附上参考连接框架
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 而后搜索并截图
函数
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 0 | 0 |
4 | 0 | 0 | 0 | 0 |
5 | 697 | 697 | 16 | 16 |
6 | 1288 | 591 | 22 | 6 |