20175209 2018-2019-2 《Java程序设计》第四周学习总结
教材知识点总结
1.子类和父类:
子类的继承性:子类与父类在同一包中——子类继承父类中不是private的变量
子类与父类不在同一包中——子类继承父类中不是private和友好类的变量
注意:当protected类型的变量使用时,只需要变量所在的子类与父类在同一包中即可,例如:类D 是类A的子类B 的子类C 的子类,只需要类A和类D在同一包中即可。
2.子类对象:
当子类对象中声明的成员变量被分配内存空间时,父类中的变量(包括private类和子类中没有使用的)都被赋予了内存空间。
3.instanceof运算符:
格式:对象 instanceof 类(子类)
4.隐藏与重写:
- 继承:当子类声明的成员变量与父类继承的成员变量名字相同时(类型可以不相同),被继承的成员变量会被隐藏
- 方法重写:子类中定义的类型和父类一致或者是父类的子类型;重写时要注意方法的名字、参数个数和参数类型要与父类方法相同,但参数可以不同;
- 重写目的:将父类中状态和行为改变为自身的
- 重写时不可以降低方法的访问权限
5.super关键字作用:
- 操作被子类隐藏的成员变量或方法
- 在子类的构造方法中调用父类的构造方法,原因:子类不继承父类的构造方法。
6.final关键字:
final关键字修饰类、成员变量和方法中的局部变量;当final修饰类时,该类不能被继承;final修饰方法时,该方法不允许被子类重写;final修饰变量时,该量为常量
final不能与abstract同时修饰一个类
7.上转型对象:
- 上转型对象不能调用对象新增的变量和新增的方法,可以调用隐藏的变量,继承的变量,继承或重写的方法
- 子类对象的上转型对象不能调用子类重写的父类的静态方法,只能调用父类的静态方法
8.继承与多态:
- 继承:父类中的变量和方法被子类调用进行操作
- 多态:父类的方法被子类重写时,产生各自的功能行为
9.关键字abstract:
- abstract类中有无abstract方法均可,非abstract中不能有abstract方法
- abstract类不能用new运算符创建对象,其子类必须重写父类的abstract方法,给出方法体
- abstract类中只是封装了要求,对于要求的具体内同应在子类中具体给出
教材学习中的问题和解决过程
问题1:对于super关键字的第二个用法的功能不是很理解
解决方案:首先在蓝墨云中观看了相关的讲解,之后对书上例子8中的程序按照视频资源上讲述的方法进行修改,分别删去了父类中的空构造方法和子类中的super(number,name) 语句进行编译,观察编译的结果的不同。super在调用父类的构造方法是默认调用的是父类中不带参数的构造方法,因此在编写程序时应注意在父类中编写一个不带参数的构造方法避免出现错误。
问题2:对于5.10节中的面向抽象编程理解有一些困难,对于书上的例子理解的也不是很明白
解决方案:这个问题主要原因是并不理解设计这类问题的主要思路,单靠自己看书理解比较花费时间,因此我选择在观看视频的讲解,在观看的同时按照视频中画图的方法将问题转化为图形解决,发现对于自己很有帮助,理解起来也更加清晰容易
问题3:第五章课后题4在IDEA中编译时无法找到对应的文件
解决方案:开始以为是自己的程序中的某个环节书写错误导致找不到对应文件,后来发现主类中忘记编写public static void main(String args[ ])语句
心得体会
Java这门课大部分以自学为主,因此在学习过程中需要大量的耐心和时间,我觉得蓝墨云中发布的视频资源对于学习有非常好的帮助,书上的相关问题在其中都可以得到解答,其余问题在班课中也可以进行讨论,这对于我解决问题开辟了一条新的路径。第五章的内容虽然没有第四章多,但我觉得难度有明显提升,这主要是指在理解方面,程序开始变得多样复杂,需要有清晰的思路去理解,尤其是在调用和返回这一方面。在完成课后习题时也发现了一些问题,虽然理解了书上的内容但实际上手时还存在困难。课后的编程题,单独的一个类拿出编写时很好完成,但是在类与类的衔接即主类的写法上就需要时间理清思路,否则会像我在第一次编写时,期待的和事实上得到的结果会有很大差距。本章在我看来除了书本上的知识点外还要学会构建框架,这对于面向抽象编程是十分关键的。
上周错题总结
1.下列关于构造方法的叙述,正确的是
解析:P58 4.3.1节。C项:C.如果类中定义一个或多个构造方法,则Java不提供默认的构造方法。