1. 本周学习总结

1.1 尝试使用思维导图总结有关多态与接口的知识点。

1.2 可选:使用常规方法总结其他上课内容。

答:我开始做笔记了,在本周学习中的一些笔记

* abstract关键字是为了实现接口或继承抽象类避免歧义而存在的。

* 当定义一个实现接口的类时,编译器只要检测到类中有一个用abstract的方法,就会自动在类的前面添加abstract。

* 接口不是类不能用new实例话。

2. 书面作业

1.代码阅读:Child压缩包内源代码

1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。

答: 不能编译通过,这句会出错,因为父类的i是不可见的,。这边可改成protected。

运行结果如下:1 2 2 1 1 2 1。

1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。

答: 不能编译通过。父类parent不是用public修饰的。

1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办?

答:protected的属性和方法只能在同一个包的情况下访问,或者用继承的方法访问。

2. abstract进阶:阅读GuessGame抽象类的设计与使用源代码

2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?

答:抽象类不需要实现方法体,可实现多态,

2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?

答:那么应该设计一个表格类输出表格,然后输入数字,输出正确答案。

2.3 结合该例子,你觉得什么时候应该使用abstract?

答:编写Guess子类的方法不需要实例化时,需要同种方法多种实现即多态时,实现接口避免歧义时使用abstract。

2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明

答: 变化的是改造后定义的是抽象类,abstract使得类的方法不需要实例化,抽象类应该尽可能的有多的共同代码。

3. Comparable与Comparator

3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?

答:对指定对象数组比较;因为实现了Comparable的类都有comparaTo方法比较得到升序排序。

3.2 有了Comparable接口为什么还需要Comparator接口呢?

         答:Comparable 定义在 Person类的内部,Comparator 是定义在Person的外部。

     3.3 可选:使用匿名内部类、Lambda表达式实现PTA编程5-2。

4. 面向接口案例分析

4.1 画出类关系图,描述每个类与接口的作用。

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?

答:共同之处:他们都实现了studentDao,也具体实现了接口中所有的方法,区别在于一个使用列表实现的,一个使用数组实现的。

 5. 什么是面向接口编程?面向接口编程的好处是什么?

     结合题目3与4中的Test.java的代码讨论分析。不要百度原封不动照搬!

         答:既然不能照搬百度上的,那我就随意说下我的理解:

接口是什么?接口是一系列方法的声明,但这些方法并没有在接口就具体编程实现,所以接下来的类StudentDaoArrayImpl和类StudenDaoListImpl就要去编程实现具体的方法,这就是面向接口编程。

面向接口编程的好处:首先我认为就是不同的类可以有不同的实现,再就是可以用抽象类,最后是方便扩展,可维护性强。

3. 码云上代码提交记录及PTA实验总结

3.1提交记录

3.2PTA实验总结

实验太难,不会

最新文章

  1. js将多个方法添加到window对象上的多种方法
  2. SVN如何查看修改的文件记录] 来源:Linux社区 作者:frogoscar
  3. 获取Echarts的DataZoom的起始值
  4. PHP集成百度Ueditor 1.4.3
  5. SQL事物隔离级别
  6. cassandra CQL 3.0 怎样实现 dynamic column;
  7. JSP的编译指令
  8. CSS中的长度值
  9. InternetOpen怎么使用代理
  10. PHP随机生成广告图片的实例 代码
  11. PureMVC(JS版)源码解析(十):Controller类
  12. 深入理解ob_flush和flush的区别(转)
  13. centos vim的安装目录在哪里
  14. lambda Join /Group by/ Contains
  15. selenium工具简介
  16. Android 开发笔记___图像视图__简单截屏
  17. java接口----继承(实现)方法
  18. scala转换date提取年月日时分秒
  19. Spring使用笔记(三) 高级装配
  20. Unity 通过代码简单实现文理的灰化显示

热门文章

  1. Linux系统中cgroup功能介绍
  2. Qt支持中文显示
  3. Python 第八天
  4. thymeleaf文本处理
  5. Silverlight——施工计划日报表(二)
  6. Linux下自动备份MySQL数据库并上传到远程FTP服务器
  7. linux之有名管道
  8. Educational Codeforces Round 27 补题
  9. poj2912 Rochambeau
  10. 海外 App 的推送服务,试试 FCM 吧!!!