20155203 2016-2017-3 《Java程序设计》第4周学习总结
20155203 2016-2017-3 《Java程序设计》第4周学习总结
教材学习内容总结
1.父类和子类类似于集合和元素,不同的地方是子类可以拓展(extends)父类之外的方法。
2.利用父类或子类建立新的实例要注意从右向左判断的原则以及子类和父类之间的“is-a”的关系。
3.子类继承抽象类的方法:标识该方法为抽象为abstract或操作抽象方法。
4.this()和super()只能择一而用,一定要在构造函数的第一行使用。
5.为了防止出现子类中调用函数不存在的情况,可以在父类中加入无参函数,增强使用的弹性。
6.final可以定义对象和方法,但不能定义子类中的方法。
7.String类和StringBuffer类都覆盖了toString方法,都是返回字符串。
所以带不带toString效果是一样的。
8.instanceOf运算符可以用来判断某个对象是否是由某个类创建的,左操作数是对象,右操作数是类。这里其实类似于之前的从右向左判断的例子。所以不一定需要实例化才能返回true。
9.类要操作接口一定要使用implements关键字,对接口的两种定义方式分别是操作接口中的定义方法和将该方法标识为abstract.
10.Java中只能继承一个父类别,但接口支持多重继承的方式
教材学习中的问题和解决过程
- 问题一:P170子类要继承抽象类中提到的第二种做法,操作抽象方法是什么意思,是将方法定义为抽象吗?
- 参考关于抽象方法后还是不太理解,于是我自己对这个我问题进行了实践,发现只要在不标识abstract的子类中将方法重新定义一遍就可以通过编译
- 问题二:P182对于equals()的重新定义:第一个if判断是判断二者是否参考同一对象,可若比较的是两个不同的对象但实质相同怎么办?
- 在反复看过程序语句后我发现,这里判断是否参考同一对象后返回true,但对不属于同一对象的不进行操作,进行下一条语句的判断
- 问题三:P202教材案例OceanWorld3 Airplane.java文件名错误,因为案例程序语句中声明的类是Seaplane,无法通过编译。
- ...
代码调试中的问题和解决过程
-
问题一:printf和print混淆不清
-
printf继承了c语言中printf的一些特性;print就是标准的格式化输出;println就是比前者多拥有一个换行功能。
-
问题二:在代码编译的过程中经常会出现加载不到主类xxx.java的情况
-
加载不到主类的情况分为以下几种错误
1.在代码中的主类名称与文件名称不符
2.由于是打包存放没能在正确的位置下存放,或源文件的地址没有描述正确。 -
问题三:ClassCastExpection是什么错误
-
java.lang.ClassCastException 是指类型转换出错 当前者的域小于后者的时候出现 譬如说:前者A是子类的对象,而后者B是父类的对象 若使用A = B;就会抛出java.lang.ClassCastException
代码托管
-
代码提交过程截图:
-
代码量截图:
上周考试错题总结
-
- 填空:System.out.println(“”+52+25);的结果是(5225);
-
- 填空:System.out.println(52+25+””);的结果是(77);
- 思考:对于这部分知识的理解太流于表面,没能实践,所以掌握的不全面
其他(感悟、思考等,可选)
根据这个星期的学习,基本掌握了父类和子类之间的关系、定义以及一些相关的方法,不太明白的是由父类产生的子类形成的被调用的子程序之间有着千丝万缕的关系,这和我们一直以来所说的“低耦合”是否冲突?
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2500行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 20/20 | |
第二周 | 460/660 | 2/2 | 30/38 | 可以用Java语言独立的编写一些具有基本结构的程序 |
第三周 | 480/ 1140 | 3/3 | 22/25 | |
第四周 | 690/1830 | 4/4 | 25/30 | 基本可以使用父类和子类进行简单的定义和调用 |
-
计划学习时间:30小时
-
实际学习时间:25小时
-
改进情况:相比上周的学习效率有所提高,对Don't repeat yourself的能力有一定的理解和掌握