20162320刘先润第7周学习总结

学号20162320 《程序设计与数据结构》第7周学习总结

教材学习内容总结

  • Java实现多态有三个必要条件:继承、重写、向上转型
  • 实现创建多态引用的两种方法:继承和接口
  • 后绑定,多态引用是一个在不同时刻可以指向不同类型对象的引用变量,它在运行时才将方法调用与它的定义绑定在一起(在很多情况下方法调用与定义绑定都是在编译时完成),这个延迟的提交叫做后绑定或动态绑定。
  • 当用某个类名声明一个引用变量时,可以用它指向这个类的任意对象,包括声明继承与它的任意类的任何对象。例如,如果Student类继承于Person类,则
Person p1 = new Student();
  • 接口,表示一组公共的抽象方法,通过这些方法可以与一个对象进行交互,并且不能被实例化。接口使用interface来定义。注:一个类可以实现多个接口,例如class A implements C, D, E,接口中的方法都是public权限
  • 接口层次,继承也可以用于接口,就是从一个接口可以从另一个接口派生而来。通过教材理解,接口的继承和类的继承一样,子接口继承父接口的所有抽象方法和常量
  • 通过接口实现多态,接口名字可用来声明对象引用变量,接口引用可以指向实现这个接口的任意类的对象
  • 软件包的使用,例如我在文件夹chapter9做的一个类就可以用package chapter9,将其放入chapter9的文件夹中,在IDEA中系统自动帮我们省略了这个步骤。但是在虚拟机中做时,编译时需要使用-d参数,该参数的作用是依照报名生成相应的文件夹
  • 包名的命名规范:1.要求包名所有字母小写 2.包名一般情况下,是你的域名要倒过来写 3.一个类的全名应该是包名 + .+ 类名
  • Java中的访问权限,1.public(公共权限)可以修饰类、成员变量和成员函数 2.private(私有权限)可以修饰成员变量和成员函数,只能在本类当中使用 3.default(包级别访问权限)不写权限修饰符,就是default权限,可以修饰类、成员变量和成员函数 4.protected(受保护权限)

教材学习中的问题和解决过程

  • 问题1:为什么教材上的Firm类的例子中的StaffMember类要声明为抽象类,感觉没必要。
    解决方案:我的理解是,声明抽象类的意义是限定不能让它实例化,StaffMember是作为继承中的占位符来辅助多态的对象的。
  • 问题2:类和接口有什么区别,第一次学发现两个的内容基本相同,又有继承的功能,感觉有些混淆。
    解决方案:通过仔细揣摩教材上的知识,发现了唯一的一点区别,就是类可被实例化,而接口是抽象的不能被实例化。这难道就是二者唯一的不同吗,还有没有其他的不同呢,暂时还未想出答案。

代码调试中的问题和解决过程

  • 问题1:图中(char)(message.length();将一个字符强制转化为char类型到底会变成什么?
    解决方案:首先翻阅以前的教材,发现并没有相关解释,只有强制转化为int的示例。没办法,只好将Secret类改编一下,我把原程序中加减shift给去掉了,防止出现随机数,令我惊奇的是打印出的结果竟然是如图所以说char对于字符的强制转化基本是不变的,这就很奇怪了,为什么要这么做呢。
  • 问题2: Printer printer= null是什么意思。
    解决方案:通过研究示例,发现这相当于声明了一个接口类型的引用,但是为什么不用implement来呢,待解决。

代码托管


(statistics.sh脚本的运行结果截图)

上周考试错题总结

  • 错题1:A(n) ________________ is a step-by-step process for solving a problem(___是为了解决问题而进行的一步步的处理过程) 答案:algorithm(算法)
    解决方案:我选的是UML类图,我以为UML类的定义就是反映的过程。其实完全不是,算法是解决问题的一步一步的方法,而UML图是直观地表示类和对象交互的方式。聚合对象是部分由其他对象组成的对象。类可以被看作是一组对象的蓝图。
  • 错题2:A return statement is not required at the end of every method(在方法的结尾,返回语句不是必需的).(正确)
    解决方案:我是根据我以前做的代码来判断的,想起了大部分语句都有return就直接选了错误答案。构造函数或任何用返回类型无效声明的方法都不需要返回语句。
  • 错题3:The ________________ reference always refers to the currently executing object(___引用总是指向当前正运行的对象).(this)
    解决方案:我选的是static,this引用总是引用当前执行的对象。空引用是指不指向任何对象的引用。其他三个选择都不在java特别参考。

结对及互评

点评过的同学博客和代码

其他(感悟、思考等,可选)

学了这么多,实际操作编写类这个坎却迟迟过不去,现在连教材的课后练习都很吃力了,希望老师出个PP系列的解析参考一下。
还有就是发现了一个很好的java辅助学习网站

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 180/180 1/4 15/15
第二周 465/645 1/5 18/33 学习了scanner
第三周 456/1101 1/6 17/ 50 学会了如何编写数学公式等
第四周 620/1734 2/8 40/90 学了条件循环和数组
第五周 890/2604 1/9 25/115 接近学会了编写类
第六周 462/3068 1/10 30/145 了解了继承的概念
第七周 860/3928 2/12 41/186 巩固以往知识
第八周 1/13

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:30 小时
  • 实际学习时间:41 小时

(有空多看看现代软件工程 课件 软件工程师能力自我评价表)

参考资料

posted @ 2017-04-16 21:58  润润大魔王  阅读(262)  评论(9编辑  收藏  举报