20162307 2016-2017-2 《程序设计与数据结构》第7周学习总结
教材学习内容总结
关键摘要:
-
1.多态引用在不同的时候可以指向不同类型的对象
-
2.多态引用在运行时才将方法调用与它的定义绑定在一起
-
3.对象的类型,而不是引用的类型,决定调用的是方法的哪个版本。
-
4.接口是一组抽象方法,所以不能被实例化。
-
5.继承可适用于接口,所以一个接口可派生于另一个接口。
-
6.在侦听器和所侦听组件之间建立关系是通过多态完成的。
教材学习中的问题和解决过程
- 问题:继承如何支持多态性?
- 解决:上网查找。
- 通过继承中超类对象引用变量引用子类对象来实现
//定义超类superA
class superA
{
int i = 100;
void fun()
{
System.out.println(“This is superA”);
}
}
//定义superA的子类subB
class subB extends superA
{
int m = 1;
void fun()
{
System.out.println(“This is subB”);
}
}
//定义superA的子类subC
class subC extends superA
{
int n = 1;
void fun()
{
System.out.println(“This is subC”);
}
}
class Test
{
public static void main(String[] args)
{
superA a;
subB b = new subB();
subC c = new subC();
a=b;
a.fun(); (1)
a=c;
a.fun(); (2)
}
}
运行结果:
This is subB
This is subC
上述代码中subB和subC是超类superA的子类,我们在类Test中声明了3个引用变量a, b, c,通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。
java 的这种机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。
代码调试中的问题以及解决过程
- 问题:敲书上的程序,结果编译运行后会出现很多的错误。
- 解决:先和书上的代码对照,发现并没有敲错,所以看了同学的博客,更改了代码。最后编译运行成功
代码托管
上周考试错题总结
-
错题1及原因,理解情况
-
下面哪条命令可以把 f1.txt 复制为 f2.txt ?
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及原因,理解情况
- 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(以上均不是设值方法的头部)
- Which of the following method headers is most likely a header for a mutator method?(以下哪个方法头部最有可能是设值方法的头部?)
-
错题3及原因,理解情况
- A _______________ variable is shared among all instances of a class(_____变量由类的所有实例共享).
A .static
B .final
C .public
D .private
E .none of the above(以上都不是)
- A _______________ variable is shared among all instances of a class(_____变量由类的所有实例共享).
-
错题4及原因,理解情况
- 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(以上均不是)
- A(n) ________________ is a step-by-step process for solving a problem(___是为了解决问题而进行的一步步的处理过程).
-
错题5及原因,理解情况
- 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 .int
B .public
C .double
D .void
E .none of the above(以上均不是)
- 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? (所有方法必须指定一个返回值类型(构造方法除外),以下哪个方法的返回值类型不返回任何值?)
-
错题6及原因,理解情况
- 下面哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容?
A .od -b -tx1 Hello.java
B .od -tcx1 Hello.java
C .od -tc -tx1 Hello.java
D .od -tbx1 Hello.java - -b 是以八进制输出
- 下面哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容?
-
错题7及原因,理解情况
- 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(以上都不正确)
- The original class that is used to derive a new class using inheritance is called ____________________ (通过继承派生出新类的原有类称为____).
-
错题8及原因,理解情况
- 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(不能在程序中调用).
- A class declared as final _________________________________ (声明为final的类_____).
结对及互评
-
基于评分标准,我给本博客打分:7分。
点评过的同学博客和代码
其他(感悟、思考等,可选)
这周有三堂课,考了两次试,做了一次实验。这周的学习量比较大,实验内容太多。
每个人对事物的理解程度是不同的,这就导致了学习效率不同,对同一件事付出的时间就是不同的,我们还是要提高我们的学习效率,这样才能节省我们的时间,去扩展我们的视野。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 72/72 | 1/1 | 20/20 | |
第二周 | 267/339 | 1/2 | 18/38 | |
第三周 | 297/636 | 1/3 | 22/60 | |
第四周 | 719/1355 | 2/5 | 30/90 | |
第五周 | 640/1995 | 1/6 | 20/110 | |
第六周 | 698/2693 | 1/7 | 20/130 | |
第七周 | 358/3047 | 2/9 | 20/150 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:20小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)