20175218 2016-2017-2 《Java程序设计》第四周学习总结
教材学习内容总结
-第五章主要讲的是子类和继承,之前第四章主要体现的是面向对象的数据的封装,而第五章主要讲述的是面向对象的继承与多态。
-类在第四章已经提到过了,第五章就主要讲了继承。继承就是一种由已有的类创建新类的机制。我们可以用继承先创建一个共有属性的一般类,再根据它创建具有特殊属性的新类。
-子类继承父类的方法只能操作子类继承和隐藏的成员变量。子类重写或新增的方法能操作子类继承和新声明的成员变量,但不能直接操作隐藏的成员的变量,需要用到super。
-子类可以体现多态。使用多态设计程序时,要尽量体现“开-闭原则”。
教材学习中的问题和解决过程
-
问题1:不知道子类是否可以有多个父类
-
问题1解决方案:通过百度得知,java不支持多继承,因为多继承有背面向对象编程,但是可以继承多个接口,即java一个子类只能继承一个父类,且子类可以无限多。
-
问题2:不清楚什么是成员变量的隐藏,什么是方法的覆盖
-
问题2解决方案:通过上网查询得到答案:
成员变量的隐藏:
如果在子类中对从父类继承来的成员变量进行重新定义,即出现了子类变量对父类变量的隐藏。所谓隐藏是指子类拥有两个相同名字的变量,一个是继承自父类,另一个是由自己定义的。当子类执行它自己定义的方法时,如果操作该变量,所操作的是它自己定义的变量,而把继承自父类的变量“隐藏”起来。当子类执行从父类继承的操作时,如果操作该变量,所操作的是继承自父类的成员变量。
方法的覆盖:
正如子类可以定义与父类同名的成员变量,实现对父类成员变量的隐藏一样,子类也可以重新定义与父类同名的方法,实现对父类方法的覆盖。当在子类中调用同名的方法时,一般情况下是调用它自己定义的方法,因而实现了对父类方法的覆盖,如果要调用父类的方法,只需在方法名前使用不同的类名或对象名即可。
代码调试中的问题和解决过程
- 问题1:【图】没有做出该得的编译结果
- 问题1解决方案:没有做到重写computer,子类出现方法重载
- 问题2:【图】运行结果不同
- 问题2解决方案:运行结果应该为resultOne=50.5 , resultTwo=2525.0
代码托管
上周考试错题总结
- 下列关于参数传值的说法,错误的是
A .对象调用方法时,参数变量必须有具体的值。
B .方法如果改变参数的值,向参数传值的变量的值也会改变。
C .可以向int型变量传递一个short值。
D .如果改变参数变量所引用的实体,原变量的实体会发生同样的变化。
E .对于可变参数,如一个参数代表x,那么x.length等于x所代表的参数的个数。
错选:D
正解:B
解析:4.5节。方法如果改变参数的值,不会影响向参数“传值”的变量的值。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
-
计划学习时间:18小时
-
实际学习时间:18小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)