201621123024 《Java程序设计》第3周学习总结

1. 本周学习总结

类与对象的区别

2. 书面作业

1.以面向对象方式改造数据结构作业'有理数'(重点)
注意:属性必须修饰为为private

1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。

1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?

面向对象是需要初始化,然后进行类封装,并不需要具体的原理,只需要操作即可,而面向过程则需要一步一步的做,了解每一步所需的原理。

2. 构造函数与初始化块

2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?

初始化类,函数格式是没有返回值并且构造函数名称和类名是一样的。

2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?

有的,因为系统会默认带一个构造函数。可能有。

2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。

`public String()`:初始化一个新的字符串对象
`public String(char value[])`:初始化数组对象
`public String(byte bytes[]):初始化字节数组

2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?

初始化块能够初始化所有对象而构造函数只能初始化相应对象,初始化块先执行,静态初始化块有`static`声明,初始化块没有,并且是静态初始化块先执行。

3.代码分析:Math类

3.1 使用java.lang.Math类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?
Math方法都是静态的,因此不需要再去new一个出来,直接用类名即可。

3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因

会有错误提示`The constructor Math() is not visible`,原代码有一句是`Don't let anyone instantiate this class`,所以会产生错误。

3.3 进一步:你觉得什么样的对象需要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()

功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。
截图:关键代码。
提示:使用LocalDateTime, DayOfWeek类

7. 封装

7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?**

面向对象中的封装就是隐藏类中对象的属性和方法,避免过多的每一步骤的操作数据,极大的提高了速率。

7.2 和封装有关的关键字有哪些?

面向对象,构造函数。
posted on 2017-10-01 11:05  Raeny  阅读(215)  评论(2编辑  收藏  举报