1. 本周学习总结
1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装等
关键词:类 对象 封装 构造函数 this,static,final
1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来
2. 书面作业
1.以面向对象方式改造数据结构作业'有理数'(重点)
注意:属性必须修饰为为private
1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。
1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?
以往的代码是面向过程编程,需要一步步的去调用“方法”,数据和对数据的操作是分离的,而面向对象的过程,数据和对数据的操作是绑在一起的,采用封装只对外提供调用“方法”的接口
2. 构造函数与初始化块
2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?
构造函数用来初始化类,创建对象
特征:构造方法的名称要和类名相同;构造函数没有返回值
2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
如果一个类不写构造函数,它会有一个默认构造函数;如果一个类中只有带参函数,系统将不会自动生成一个默认构造函数,但是可以添加
2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。
第一个:创建一个空的字符串
第二个:创建一个字符串
第三个:创建一个字符串,但是先传入数组再创建
2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?
初始化块是给给所有对象进行统一初始化,构造函数只给对应对象初始化;
初始化块对对象进行初始化,对象一建立就会运行,所以初始化块比构造函数块先执行;
静态初始化块给类进行初始化,随着类的加载而执行,不管创建多少个对象有且只执行一次,静态初始化块比初始化块先执行。
以下代码可说明执行顺序:
public class people
{
public static int num=0;
String name;
static
{
System.out.println("静态初始化块"+num);
}
{
System.out.println("初始化块"+num);
}
public people(String name)
{
System.out.println("构造函数块"+num);
this.name=name;
num++;
}
public static void main(String[] args) {
people a=new people("xiao");
people b=new people("chen");
}
}
3.代码分析:Math类
3.1 使用java.lang.Math
类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?
java.lang.Math
类中的方法以及成员变量都是静态的,所以他并不需要new新建对象,只需要使用"类.方法"进行直接访问
3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。
对象调用的方法都是static,所以并不需要new一个对象
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()
功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。
截图:关键代码。
提示:使用LocalDateTime, DayOfWeek类
7. 封装
7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?
封装就是把“方法”装起来,不对外公开是内部实现的细节,这样即使修改了“方法",外部访问“方法”的原则也不会改变,而且被封装后的对象可以被外部多个对象访问,就不需要去指定不同外部对象的不同的服务对象
7.2 和封装有关的关键字有哪些?
this
private
public
8. 结对编程实践
对方姓名:安晏菊
所完成的题目:pta 7-2
感想:7-2是在7-1的基础上加以改动,在课上已经学会打7-1后,7-2大概代码都能完成,就是在static的处理上出现了问题,没有理解static的使用效果
9. 选做:Runnable Jar
我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打成一个可运行的jar包,在命令行直接运行。改造题目6,使其从命令行接收参数,参数为年-月-日,如1999-09-09。最后将项目打成可运行的jar包,然后在命令行通过java -jar运行,并截图。
3. 码云及PTA
3.1. 码云代码提交记录
3.2 截图PTA题集完成情况图
3.3 统计本周完成的代码量
有bug???