20175225 2018-2019-2 《Java程序设计》第4周学习总结
教材学习内容总结
1.子类只能有一个父类,一个类可以有多个或零个子类,如果一个子类的声明中没有使用extends关键字,这个类被系统默认为是Object的子类,即类声明class A
与 class A Object
是同等的。
2.子类和父类在一个包中,子类不继承父类的私有成员变量;子类和父类不在一个包中,子类不继承父类的友好成员变量。
3.子类若要重写继承的方法,则子类定义的方法类型必须和父类定义的方法类型相同。
4.重写父类时,不允许降低方法的访问权限,可以提高访问权限(访问权限由高到低排列顺序是public、protected、友好的、private)。
5.final声明类为final类,final类不能被继承;若final修饰父类中的一个方法,那么这个方法不允许子类重写;final修饰局部或成员变量时,该变量就是常量,且在声明常量时必须指定该常量的值。
6.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法;但可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。
7.一个非abstract类是abstract类的子类,它必须重写父类的abstract方法,即去掉abstract方法的abstract修饰,并给出方法体。
问题:Example5_3中: cheapGoods.weight 198.98
是非法的,而后面 cheapGoods.oldSetweight(198.987)
又可以调用。
解决方案:询问同学知道因为父类以及被隐藏,weight的变量已经是int型,所以不能直接声明,但是可以通过子类对象调用继承的方法来操作隐藏的变量。
代码托管
(statistics.sh脚本的运行结果截图)
总结
本周的代码较上周要少,但知识点更复杂、抽象,对程序的理解还要通过一些生活中的的例子来参考,最主要还是对知识不熟悉,应该多打一些代码,自己动手实践,对不懂的总结下来。还应该对知识点构建一个框架,到时候写程序才有一个清晰的思路。