1. 本周学习总结
关键词: 面向对象编程、对象、类、封装
2. 书面作业
1. 以面向对象方式改造数据结构作业'有理数'(重点)
1.1截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。
https://gitee.com/piraat/java201621123086/blob/master/week3/Rational.java
1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?
答:
面向过程编程: 主要想的是如何解决问题。特别是在初学C语言时,对于函数的运用不是那么熟练,所以经常将所有语句堆在主函数里。时隔一两天后,即使是自己再要想明白自己编程时的想法也很困难。
面向对象编程: 要将每个 方法 的目的、结果想清楚。同时也要注意权限:private
形容属性;public形容方法。并且,要注意static方法不能引用non-static方法。
2. 构造函数与初始化块
2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?
- 构造函数用于创建对象时定义对象的属性。
特征:
- 必须和类名相同
- 没有返回值
- 与关键字 new 连用
2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
- 如果一个类不写构造函数,它有构造函数
- 如果一个类中只有带参的构造函数,它没有不带参数的默认构造函数
2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。
创建一个无参数的字符串对象
将字符数组根据字符表转换为字符串
用缓存区初始化字符串
2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?
初始化块 | 静态初始化块 | 构造函数 |
---|---|---|
不接受参数 | 不接受参数 | 可以接受参数 |
不需要名称 | 不需要名称 | 名称需与类名相同 |
视对象执行次数而定 | 一次 | 视对象执行次数而定 |
执行顺序: 静态初始化块→初始化块→构造函数
3.代码分析:Math类
3.1 使用java.lang.Math类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?
因为Math对象的方法都是 static 方法,可以在无对象的前提下创建
3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。
可以看到,Math对象是private修饰的
3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)
- 非静态方法,需要通过new关键字来创建对象使用,需要对类属性进行操作
- 基本数据类型、静态方法,可以直接调用, 不需要对类属性进行操作
4. 重载Overload
4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?
重载: 方法命名相同,但参数不同
构造函数重载: 构造函数具有相同的名字,但参数个数或类型不同。
区分方法: 通过参数判断
4.2 在java.lang.Math类中举出1个方法重载的例子?
5. 代码阅读: final
final修饰的变量不能改变,为什么如下代码却可正常运行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
因为此处final修饰的变量是数组对象,而接下来改变的则是数组对象的引用,并没有对对象本身进行更改
6. Java8中的时间日期类:编写函数public static boolean isMondayToFriday()
ps.此处不知为何true与false是相反的
7. 封装
7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?
封装 就是将实现方法与对象属性打包起来,同时运用private/public等关键字来限定外部对此对象的权限。从而使得开发人员可以在不考虑内部实现的情况下对于这些对象加以使用。
- 数据更为安全
- 为开发人员提供了便利
- 使不同类之间的相互影响减少到最低限度
- 控制访问权限
7.2 和封装有关的关键字有哪些?
private 、 public 、 protected 、 default
8. 结对编程实践(未完成,0分)
找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。
对方姓名: 王祖建
所完成的题目: 7-3 jmu-Java-03面向对象基础-03-形状
感想: 在完成核心代码时两人并没有遇到太大困难,但有一些细节上的问题使得程序在PTA尚无法通过,如输出要用arrays.deeptostring方法、在复制代码时将包名字也复制上等,同学及时给予了指正
9. 选做:Runnable Jar
3. 码云及PTA
3.1. 码云代码提交记录
3.2 截图PTA题集完成情况图
3.3 统计本周完成的代码量
周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 |
3 | 619 | 619 | 15 | 15 |