20162306 2016-2017-2《程序设计与数据结构》第七周学习总结
教材学习内容总结
本周学习了第九章的相关内容,主要学习了:
- 1、后绑定:多态引用可以指向不同类型在不同的时候的对象、在运行时才将方法调用与它的定义绑在一起;
- 2、通过继承实现多态:引用变量可以指向声明继承于它的任意类的对象;
- 3、接口:接口层次,Comparable接口,Iterator接口;
- 4、通过接口实现多态:事件处理
教材学习中的问题和解决过程
- 问题:对于comparable接口的意义和用法不太理解。
- 解决过程:通过上网查阅博客,通过对什么是comparable接口?能实现什么方法?
以及实例,对comparable接口有了一定的了解。
代码调试中的问题和解决过程
- 问题1、与书上代码一致却因count无法通过编译
- 解决过程:将count删除即可(并不清楚为什么。。。。)
代码托管
- 代码提交过程截图:
- 代码量截图:
上周考试错题总结
- 第五周测试
1、下面哪条命令可以把 f1.txt 复制为 f2.txt ?
(AC)
A .cp f1.txt f2.txt
B .copy f1.txt f2.txt
C .cat f1.txt > f2.txt
D .cp f1.txt | f2.txt
E .copy f1.txt | f2.txt
解析:copy是Windows下的命令。cat f1.txt > f2.txt 通过输出重定向实现了复制。
2、以下哪类方法没有任何返回值类型(甚至没有void返回值类型)?
(D)
A .methods declared as static(声明为static的方法)
B .methods declared as public(声明为public的方法)
C .methods declared as private(声明为private的方法)
D .constructors(构造函数)
E .all of the above have return types(以上均有选项均有返回值类型)
解析:构造函数是唯一没有任何返回类型的方法。他们甚至没有一个void返回类型。所有其他的方法必须指定返回类型或被宣布为无效。
3、以下哪个方法头部最有可能是设值方法的头部?
(D)
A .public int getAge()
B .public double computeSalary()
C .public Person()
D .public void setAge(int newAge)
E .none of these are headers for a mutator method(以上均不是设值方法的头部)
解析:调整器的方法,改变一个实例变量的值,通常被称为“setter。“因此,选择d是正确答案。选择的是一个头访问器方法,通常被称为“getter。“选c是一个构造函数,选择b是一个类方法。
4、___引用总是指向当前正运行的对象.
(E)
A .null B .static C .final D .actual E.this
解析:这个引用总是指当前执行的对象。一个空引用,不指向任何对象的引用。其他三个选择并不特别引用在Java中。
5、___是为了解决问题而进行的一步步的处理过程.
(D)
A .UML diagram(UML类图) B .aggregate object(对象聚合) C .class(类)
D .algorithm(算法) E .none of the above(以上均不是)
解析:一个算法是一个循序渐进的解决方案解决问题。UML图是一种视觉代表类和对象如何交互。一个聚合对象是由一个对象,在某种程度上,其他的对象。一个类可以被认为是一组对象的蓝图。
6、所有方法必须指定一个返回值类型(构造方法除外),以下哪个方法的返回值类型不返回任何值?
(D)
A .int B .public C .double D .void
E .none of the above
解析:不需要返回任何数据的方法应该无效指定为返回类型。不能有公共方法指定为返回类型,所以选择b是不正确的。选择a和选择c指定返回类型,因此他们必须返回的数据类型。
7、____对象是由其他对象组成,或者至少是部分由其他对象组成的对象.
(B)
A .static(静态) B .aggregate(聚合) C .encapsulated(封装)
D .private E .public
解析:一个聚合对象是由其他对象。选择a,d和e不引用类型的对象。封装对象可能是由原始类型或对象类型。
8、如果一个服务非常复杂,以至于不能用一个方法来实现,一般通过将方法分解成几个____支撑方法.
(C)
A .static B .aggregate(聚合) C .private(私有)
D .public E .final
解析:私人支持方法非常有用当服务被定义在一个单一的方法太过复杂。因此选c是正确的。
9、在方法的结尾,返回语句不是必需的
(√)
解析:不需要返回语句的返回类型的构造函数或方法声明无效。
-
第五周测试总结:这周考试遭遇“滑铁卢”,主要原因还是在于对于之前学习的内容没有及时复习,才导致考试时有许多基础知识出现错误,导致成绩不好。
-
第六周测试
1、通过继承派生出新类的原有类称为____.
(D)
A .a superclass(超类) B .a parent class(父类 ) C .a base class(基类)
D .all of the above(以上都正确) E .neither a, b, nor c(以上都不正确)
解析:原来的类可以被称为一个超类,父类和/或一个基类。
2、如果子类构造函数没有显式调用超类的构造函数,那么________.
(C)
A .a run-time error will result(将产生运行时错误).
B .a compile-time error will result(将产生编译时错误).
C .the constructor will be called anyway(构造函数不管怎样都会被调用).
D .the class will be implicitly declared as abstract(该子类将被隐式声明为abstract).
E .none of the above(以上都不是)
解析:子类的构造函数将隐式地调用超类的构造函数如果没有显式地完成。这将确保正确地初始化的类。
3、一旦方法被子类重写,原有的方法不能再在子类中引用。
(×)
4、在Java中子类只能继承一个父类
(√)
解析:允许一个子类扩展多个父类会导致多重继承,这在Java不支持。
5、如果有以下的程序代码:
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[arr1.length];
arr2 = arr1;
for(int value : arr2) {
System.out.printf("%d", value);
}
以下描述何者正确?(A)
A .执行时显示123
B .执行时显示12300
C .执行时出现 ArrayIndexOutOfBoundException 错误
D .编译失败
结对及互评
- 第九章的学习依旧是以概念性的内容居多,本周和李昱兴同学的及对学习还是以相互督促看视频、看教材和敲代码为主。李昱兴同学在面对高数、大物等多方面压力下还是能按时完成任务,并在周测中取得好成绩,还是很腻害的(膜拜大神~)。
点评过的同学博客和代码
其他
- 这周上了三节课,又正赶上了学生会的素拓,真的是身心俱疲。。。
- 近几周的概念性的知识比较多,发现只要认真看了视频和教材在考试中成绩都不会差,但是经过一节实验课之后发现,自己对于前几章的知识掌握的还是不够好。理论只有熟于心才能顺于手,看来这几周需要为之前“还债”了。。。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 15篇 | 300小时 | |
第一周 | 63/63 | 1/1 | 10/10 | |
第二周 | 349/412 | 1/2 | 20/30 | |
第三周 | 294/706 | 1/3 | 15/45 | |
第四周 | 808/1518 | 1/4 | 25/70 | |
第五周 | 561/2079 | 1/5 | 25/95 | |
第六周 | 556/2635 | 1/6 | 20/115 | |
第七周 | 377/3012 | 1/7 | 20/135 |