20165203《Java程序设计》第四周学习总结
教材学习内容总结
第5章 子类与继承
- 子类的继承性
- 子类和父类在同一包中的继承性:子类继承父类中不是
private
的成员变量和方法作为自己的成员变量和方法 - 子类和父类不在同一包中的继承性:子类只继承父类中的
protected
和public
访问权限的成员变量和方法作为子类的成员变量和方法
2.成员变量的隐藏 - 子类对象以及子类自己定义的方法操作与父类同名的成员变量是指子类重新声明的这个成员变量。
- 子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量
3.方法的重写 - 子类中定义的这个方法要和父类中被覆盖的方法类型一致
- 重写的方法既可以操作继承的成员变量、调用继承的方法,也可以操作子类新声明的成员变量、调用新定义的其他方法,但无法操作被子类隐藏的成员变量和方法。
4.super
关键字: - 子类中想使用被子类隐藏的成员变量或方法
- 子类在其构造方法中需使用
super
来调用父类的构造方法,而且super
必须是子类构造方法中的头一条语句。
5.final
final
类不能被继承,不能有子类。final
方法不允许子类重写final
修饰成员变量或局部变量,他就是常量,且运行期间不允许发生变化。
6.abstract
-abstract
类可以有abstract
方法,也可以有非abstract
方法,但是非abstract
类只有非abstract
方法
第6章 接口与实现
1.接口声明
- 接口通过使用关键字interface来声明
- 格式:interface 接口的名字
2.接口体
- 接口体中包含常量定义和方法定义两部分。
- 接口体中只进行方法的声明,不许提供方法的实现,
- 所以,方法的定义没有方法体,且用分号“;”结尾。
3.接口回调
可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,
那么该接口变量就可以调用被类重写的接口方法。
实际上,当接口变量调用被类重写的接口方法时,就是通知相应的对象调用这个方法。
4.abstract类与接口的比较
- abstract类和接口都可以有abstract方法。
- 接口中只可以有常量,不能有变量;而abstract类中即可以有常量也可以有变量。
- abstract类中也可以有非abstract方法,接口不可以。
教材学习中的问题和解决过程
Q1:当学习到子类和父类不在同一包中的继承性时,提到private
、public
和protect
,他们之间的区别是什么?
A1:经过回顾第四章的内容,我总结了一下:
修饰符 | 修饰变量和方法 |
---|---|
private | 如果A类中某个成员是private类变量和方法,那么另一个类B中,不能通过类名A来操作这个变量和方法 |
public | 如果A类中某个成员是public类变量和方法,那么另一个类B中,能通过类名A来操作这个变量和方法 |
protect | 如果在另外一个B中用类A创建了一个对象后,如果A和B在同一个包中,那么该对象可以访问自己的protect变量和方法。 |
Q3:(未解决)对于如图所示代码,为什么要这么写,而不是直接给对象的实体变量赋值?
代码调试中的问题和解决过程
Q1:(未解决)在调试代码时,出现了如图所示状况:
Q2:(已解决)编译运行时,出现了如图所示错误:
A2:我上网查询了,总结了一下出现该问题的原因:
一般出现此问题的原因为:
- 花括号没有闭合
- 缺少了分号
仔细检查了一下自己的程序,确实是在父类中少打了一个}
。
Q3:(已解决)此前在学习之前的内容时,一直存在一个问题,出现类和主类不在同一个包里时,在编译主类时,总是出现错误,找不到类,不知是什么原因?
A3:在同学的帮助下,找到了原因,我之前并没有在类的文件夹之外编译运行,在文件夹之外运行后,编译成功了。
Q4:(已解决)之前运行代码时,出现了println
和printf
敲错的问题,为此,我特意总结了一下区别:
A4:
printf
主要是继承了C语言的printf
的一些特性,可以进行格式化输出
print
就是一般的标准输出,但是不换行
println
和print
基本没什么差别,就是最后会换行
代码托管
上周考试错题总结
Q1:
这道题尽管做对,但是我还是想了解一下java demo 3
的含义。
Q2:
A2:int
强制转换字符表示字符的Unicode码,即字符在Unicode表中的位置。
Q3:
A3:漏选了A项,字符串数组的初始化后面必须要加{ }
。详情可继续参照java字符串数组初始化和赋值
其他
随着学习内容的增多,我们在之后的学习过程中难免会出现对前面的知识出现模糊的情况,这并不可怕,其实,这反而是一件好事,帮助我们了解自己对于前面知识点的漏洞,随后进行查漏补缺,会对整个知识体系的掌握有很大的好处。
另外,自己要学会对比总结学习,所谓对比总结就是对比一些很相似但又不同的知识点,并总结他们的相同点和不同点,这样知识会掌握的更加牢固。
还有,通过本周的考试,自己明显吃力了很多,应该自己尝试编代码,而不是一味地敲书上的代码,应该多实践,多动手,理论+实践。
学习进度条
~ | 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第三周 | 1716/1500 | 1/2 | 30/90 |