面向对象入门
1. 本周学习总结
1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装
等
对象,类,构造函数,封装性,继承。
1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。
2. 书面作业
1.以面向对象方式改造数据结构作业'有理数'(重点)注意:属性必须修饰为private
1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。
1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?
- 面向过程编程是将所需步骤一步一步实现,数据和对数据的操作是分离的;
- 面向对象编程是将对象联系起来,将数据和对数据的操作绑定在一起。
2. 构造函数与初始化块
2.1 结合PTA5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?
- 构造函数用于创建对象时初始化对象;
- 以public或private开头;构造函数名与类名相同;构造函数没有返回值和返回类型。
2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
- 系统会为一个没有构造函数的类生成一个构造函数。
- 系统不会为只有带参的构造函数生成默认构造函数。
2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。
1.创建一个空字符串;
2. 使用字符串对象来初始化;
3. 使用了数组对象来初始化。
2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?
- 构造函数是对一类的对象统一初始化的方法。用起来方便可以统一管理,构造函数可以重用,
而代码块只能每次都写。而且如果对象增加了属性,代码块改动的地方就多了。初始化块先执行。 - 静态块在第一个对象创建时运行,初始化块在每个对象创建时运行。静态初始化块先执行。
3.代码分析:Math类
3.1 使用java.lang.Math
类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?
Math类中的方法都是静态类的,不需要新创建。
3.2 如果newMath()
会产生什么错误?尝试阅读Math类源代码,分析原因。
无法运行,出现错误The constructor Math() is not visible
;Math类被声明为private,无法用new来构建。
3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)
使用 static
修饰的类是全体对象实例共享的资源,不需要new来修饰。
4. 重载Overload
4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?
-
和返回值类型没有关系,只要函数名一样,参数列表不一样就是重载。
- 根据参数的数量和属性。
4.2 在java.lang.Math
类中举出1个方法重载的例子?
public static long subtractExact(long x, long y)
和public static int subtractExact(int x, int y)
5. 代码阅读: final
。final修饰的变量不能改变,为什么如下代码却可正常运行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
final修饰的NUMBS不能再指向其他数组对象,但它指向的数组的内容可以改变。
6. Java8中的时间日期类:编写函数public static booleanisMondayToFriday()
功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。
7. 封装
7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?
- 封装就是把一系列的对象放在一个类中,从而将属性隐藏起来。
- 如pta中,矩形的长宽或圆的半径被
private
封装起来,使得在该类之外无法变动作这些数据。
7.2 和封装有关的关键字有哪些?
- 对象
- 属性
- public
- private
8. 结对编程实践(未完成,0分)
我的结对对象是张书阳,我们共同完成了pta的jmu-Java-03面向对象基础-02-构造函数与初始化块这道题目。这次结对确实起到了1+1>2的效果,一开始我们确定了思路,虽然代码上也有一些不同的想法,但是在同宿舍的同学的指点下,完成的还算不错。
3. 码云及PTA
3.1. 码云代码提交记录
3.2 截图PTA题集完成情况图
3.3 统计本周完成的代码量
行数 | 新增行数 | 文件数 | 新增文件数 |
---|---|---|---|
684 | 456 | 56 | 28 |