20162323周楠 《程序设计与数据结构》第七周学习总结
20162323周楠 2016-2017-2 《程序设计与数据结构》第七周学习总结
教材学习内容总结
-
1.定义多态,多态引用在不同的时候可以指向不同类型的对象
-
2.动态绑定(后绑定):很多情形下,方法调用可以与方法定义的绑定可以在编译时完成,但对于多态引用,绑定直到运行时才确定下来,需要调用时所指向的对象的类型来确定要用到哪个方法来定义
-
3.多态引用在运行时才将方法调用与它的定义绑在一起
-
4.使用继承机制的创建多态引用:通过继承实现多态
引用变量可以指向声明继承于它的任意类的任何对象。
对象的类型,而不是引用的类型,决定调用的是方法的哪个版本
-
5.Java接口的目的及语法
接口是一组抽象方法,所以不能被实例化
继承可适用于接口,所以一个接口可派生于另一个接口
-
6.通过接口实现多态
接口可用来声明对象引用变量
接口引用可以指向实现这个接口的任意类的任何对象
方法的参数可以是多态的,这样使方法具备了对其参数进行控制的灵活性
-
7.多态环境下的面向对象设计
事件处理:在侦听器和所侦听组件之间建立关系是通过多态完成的
教材学习中的问题和解决过程
- 问题1:对课本中多态的理解不是很明白
- 解决方案:通过自己不断地尝试,从内存方面进行理解并结合敲代码终于明白了
代码调试中的问题和解决过程
- 问题1: 对程序的结果不理解
- 问题1解决方案:看书查找。如果子类复写了父类的方法,那么调用子类方法的时候,先找子类的方法
代码托管
上周考试错题总结
-
1.下面哪条命令可以把 f1.txt 复制为 f2.txt
A .cp f1.txt f2.txt
C .cat f1.txt > f2.txt
copy是Windows下的命令。cat f1.txt > f2.txt 通过输出重定向实现了复制。
-
2.Linux中,使用()命令可以更改一个文件的权限
A .attrib
B .change
C .chmod
D .file
答案:C。file用于查看文件类型,attrib是Windows下的命令,没有change这个命令。
-
3.Which of the following method headers is most likely a header for a mutator method?(以下哪个方法头部最有可能是设值方法的头部?)
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(以上均不是设值方法的头部)答案:D.变异器是改变实例变量的值的方法,通常被称为“设置器”。A是访问器方法的标题的一个例子,通常称为“getter”。C是一个构造函数,B是一个类方法。
-
4.A _______________ variable is shared among all instances of a class(_____变量由类的所有实例共享).
A .
staticB .
finalC .
publicD .
privateE .
none of the above(以上都不是)答案:A.静态变量在类的所有实例之间共享。 最终变量是一个常量,公共变量是可以从对象外部访问的,私有变量是在对象外不能被访问的变量。
-
5.The ________________ reference always refers to the currently executing object(___引用总是指向当前正运行的对象).
A .
nullB .
staticC .
finalD .
actualE .
this答案:E。 null引用是不指向任何对象的引用。 其他三个选择不是Java中的特殊参考。
-
6.A(n) ________________ is a step-by-step process for solving a problem(___是为了解决问题而进行的一步步的处理过程).
A .
UML diagram(UML类图)B .
aggregate object(对象聚合)C .
class(类)D .
algorithm(算法)E .
none of the above(以上均不是)答案:D.算法是一个解决问题的分步解决方案。 UML类图是一种直观地表示类和对象如何交互的方式。 对象聚合是部分由其他对象组成的对象。 类可以被认为是一组对象的蓝图。
-
7.All methods (with the exception of constructors) must specify a return type. What is the return type for a method that does not return any values? (所有方法必须指定一个返回值类型(构造方法除外),以下哪个方法的返回值类型不返回任何值?)
A .
intB .
publicC .
doubleD .
voidE .
none of the above(以上均不是)
答案:D。不需要返回任何数据的方法应该具有指定为返回类型的void。 public方法不能指定其返回类型, A和C指定返回类型,因此它们必须返回该类型的数据。 -
8.There are times when it is appropriate to return data from a method of a type that is inconsistent with the return type specified in the method header(有时允许方法返回的数据类型和方法头部指定的返回值类型不一致).
A .
trueB .
false答案:B。从方法返回的值必须与方法头中指定的返回类型一致。
-9.如果有以下程序片段:
class Some{
void doService(){
System.out.println("some service");
}
}
class Other extends Some{
@Override
void doService(){
System.out.println("others srrvice");
}
}
public class Main{
public static void main(String[] args){
Other other = new Other();
other.doService();
}
}
以下描述正确的是
A .
编译失败
B .
显示some service
C .
显示other service
D .
先显示some service后显示other service
答案:C
-
- 如果有以下程序片段:
class Some{
String ToString(){
return "Some instance";
}
}
public class Main{
public static void main(String[] args){
Some some = new Some();
System.out.println(some);
}
}
以下描述正确的是
A .
显示Some InstanceB .
显示Some@XXXX,XXXX为十六进制的数字C .
发生ClassCastExceptionD .
编译失败答案:B。
- 如果有以下程序片段:
-
11.下面哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容?
A .
od -b -tx1 Hello.javaB .
od -tcx1 Hello.javaC .
od -tc -tx1 Hello.javaD .
od -tbx1 Hello.java答案:BC。-b 是以八进制输出
-
12.The original class that is used to derive a new class using inheritance is called ____________________ (通过继承派生出新类的原有类称为____).
A .
a superclass(超类)B .
a parent class(父类)C .
a base class(基类)D .
all of the above(以上都正确)E .
neither a, b, nor c(以上都不正确)
答案:D。原始类可以称为超类,父类和/或基类。 -
13.In order for derived classed to have access to encapsulated data members and methods of superclasses, the data members and methods should be declared using the ____________________ modifier(为了能在派生类中引用超类中封装的数据成员和方法,可以使用修饰符____声明).
A .
privateB .
publicC .
protectedD .
finalE .
static -
14.A class declared as final _________________________________ (声明为final的类_____).
A .
cannot be changed(不能更改).B .
cannot have subclasses(不能拥有子类).C .
cannot have superclasses(不能拥有超类).D .
has several abstract methods(具有几个抽象方法).E .
cannot be used in a program(不能在程序中调用).答案:B。final修饰符限制继承。特别地,被声明为final的类不能具有子类。
-
15.Which of the following key words indicates a new class is being derived from an existing class? (下面哪个关键字表明新类是从当前类派生的?)
A .
superB .
finalC .
extendsD .
inheritsE .
expands答案:C。
-
16.Once a method is overridden in a subclass, the original version can never be referenced from within the subclass(一旦方法被子类重写,原有的方法不能再在子类中引用).
A .
trueB .
false答案:B。
-
17.如果有以下的程序代码:
Int x=100;
Int y=100;
Integer wx=x;
Integer wy=y;
System.out.println(xy);
System.out.println(wxwy);
在JDK5以上的环境编译与执行,则显示的结果是A .
true、trueB .
true、falseC .
false、trueD .
编译失败答案:A。
-
18.如果有以下的程序代码:
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[arr1.length];
arr2 = arr1;
for(int value : arr2) {
System.out.printf("%d", value);
}
以下描述何者正确?A .
执行时显示123B .
执行时显示12300C .
执行时出现 ArrayIndexOutOfBoundException 错误D .
编译失败答案:A。
结对及互评
点评过的同学博客和代码
-
本周结对学习情况
- 20162322朱娅霖
- 结对学习内容
- 对教材的学习
- 一起讨论本周实验二
-
上周博客互评情况
思考
在本周的学习中,周一我对上周所学的知识进行了一定的复习,并学习了第九章的书上的一部分内容,本来以为这些代码比较简单,但是在真正敲代码的时候,还是会有一些小毛病,这些错误都是在我看书的时候所没有发现的,对于第九章的学习,我个人觉得还是应该结合视频来学习,先看视频后看书更能够理解。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第四周 | 812/1447 | 9/17 | 32/82 | |
第五周 | 479/1926 | 7/24 | 18/100 | |
第六周 | 559/2485 | 9/33 | 20/120 | |
第七周 | 630/3115 | 4/37 | 18/138 |