20175320 2018-2019-2 《Java程序设计》第4周学习总结
教材学习内容总结
- 本周学习了教材的第五章的内容。在这章中介绍了子类与继承,着重讲了子类继承的规则以及使用
super
、final
关键字的使用方法,介绍了方法的重写以及基于重写的面向抽象的编程方法。 - 继承是一种由已有的类创建新类的机制,子类继承一般类的属性和行为,并根据需要增加它自己的新的属性和行为。
- java使用关键字
extends
来定义一个类的子类,并不支持多重继承,Object
是所有类的祖先类。 - 子类和父类在同一个包中,子类继承其父类中不是private的变量和方法,子类和父类不在同一个包中时,子类只继承父类中的protected和public访问权限的变量及方法。
- 当用子类的构造方法创建一个子类的对象时,不仅子类中声明的成员变量被分配了内存,而且父类的成员变量也都分配了内存空间。子类中还有一部分方法是从父类继承的,这部分方法却可以操作这部分未继承的变量。
- instanceof运算符左面的操作元是对象,右面的操作元是类,当左面的操作元是右面的类或其子类所创建的对象时,instanceof运算的结果是true,否则是false。
- 子类可以通过声明与父类相同名字的变量来隐藏继承的成员变量,通过重写可以隐藏已继承的方法。
- 重写时方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同,重写方法既可以操作继承的成员变量、调用继承的方法,也可以操作子类新声明的成员变量、调用新定义的其他方法,但无法操作被子类隐藏的成员变量和方法。
- 子类一旦隐藏了继承的成员变量,那么子类创建的对象就不再拥有该变量,该变量将归关键字super所拥有。
- 当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,由于子类不继承父类的构造方法,因此,子类在其构造方法中需要使用super来调用父类的构造方法。
- final关键字可以修饰类、成员变量和方法中的局部变量。final类不能被继承,final方法不允许子类重写,成员变量或局部变量如被修饰为final,则改变量为一常量,且需要在声明时指定该常量的值。
- 对象的上转型对象是子类负责创建的,上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。上转型对象操作子类继承的方法或子类重写的实例方法,如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法。
- 多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能和行为。
- 对于abstract方法,只允许声明,不允许实现,而且不允许使用final和abstract同时修饰一个方法或类,也不允许使用static修饰abstract方法,即abstract方法必须是实例方法。
- 面向抽象编程可以使程序的设计者把主要的精力放在程序的设计上,而不必拘泥于细节的实现。
- 使用多态进行程序设计的核心技术之一是使用上转型对象,即将abstract类声明的对象作为其子类对象的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
教材学习中的问题和解决过程
- 问题1:不知道例子5_7
super.n = n;
中的super关键字是否是必要的。 - 问题1解决方案:将该语句去掉后进行编译运行,发现结果与代码修改前是一致的。
- 问题2:不理解为什么static不可以修饰abstract方法。
- 问题2解决方案:经查找书本了解到上转型对象不能调用子类重写的静态方法。
代码调试中的问题和解决过程
- 问题1:产生了如图所示错误。
- 问题1解决方案:发现是错误行的上一行忘记添加了分号。
-问题2:产生了如图所示错误。
- 问题2解决方案:发现是没有切换到正确的文件夹中。
代码托管
上周考试错题总结
- 如果类中没有编写构造方法,系统会默认该类只有一种构造方法。
- 忽略了B选项的正确性。
其他(感悟、思考等,可选)
Java编程语言中有许多内容是环环相扣的,有时一个问题的答案可以在前面的知识点中找到,这就要求我们要熟悉基础概念,弄清楚每一个关键词,每一条语句的限制条件。另外一定要多多练习,这样才能发现一些意想不到的问题,且在使用中加深对关键词以及语法的理解。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 1002/2407 | 1/5 | 29/87 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
- 计划学习时间:20小时
- 实际学习时间:25小时
- 改进情况:多看看现代软件工程 课件 软件工程师能力自我评价表