5
1. 本章学习总结
今天主要学习了三个知识点
- 封装
- 继承
- 多态
2. 书面作业
1. 代码阅读:Child压缩包内源代码
1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。
答:不能,语句
System.out.println(i);
中的i会出现错误,子类child文件继承父类parent,在parent文件中语句private int i=1
i是私有的,必须改成protected,方可执行。
执行结果:
1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。如何更改才能使之正常编译?
答:不能。
会出现以下错误:
需要将parent文件中的protected int j=2
protected int geti()
改为public int j=2;
public int geti()
才能正常编译。
2. abstract进阶:阅读GuessGame抽象类的设计与使用源代码
2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?
答:改造前,未使用抽象类,只能控制台输出;改造后,使用了抽象类,既可以在控制台输出,也可以使用对话框图形界面等输入。
2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?
答:本题参考 Java论文 猜字游戏的实现 界面设计上,至少要有三部分来实现,一个输入,一个人提示,一个判断大小。
2.3 结合该例子,你觉得什么时候应该使用abstract?
答:
abstract类定义:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类叫抽象类。
使用:分析问题时仅有大体的框架,没有具体的方法,这时候就需要使用abstract类。
例子:猜字游戏中我们大体上知道,父类Guessgame需要有随机print数字、输入数字等方法。子类ConsoleGame有具体的方法。这时候就使用到了abstract。
2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。
答:这个例子中,生成的数字是变化的,而且是随机的,但是对数字处理的方法是不变的。父类GuessGame使用abstract,
参考资料:
底下的是我从百度搜索得到的结果
Q3. 编写代码
public class HelloWorld{
public static void main(String[] args){
System.out.println("hi");
}
}
3. PTA实验总结及码云上代码提交记录
3.1本周Commit历史截图
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图,如下图所示
3.2 实验总结
实验碰到的问题、思考、收获与解决方案
底下是一个表格
id | 姓名 |
---|---|
1 | 张三 |
2 | 李四 |