201521123019 《Java程序设计》第5周学习总结
1. 本章学习总结

2. 书面作业
一、代码阅读:Child压缩包内源代码
1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。
Answer:
不能通过编译,出错语句
public void getParenti(){
System.out.println(i);
}
可以将Parent类中的i属性的修饰符private改为protected;输出结果为1 2 2 1 1 2 1。
分析:
c.getParenti(); -> System.out.println(i); 输出父类中的i,初始化为1;
c.getParentj(); -> System.out.println(super.j); System.out.println(j); System.out.println(geti()); System.out.println(super.geti());(System.out.println(geti()); System.out.println(super.geti()); -> protected int geti(){return i;}) 输出子类继承父类中的j、父类中的j、父类中的i、子类继承父类中的i;
Other.showParentj(p); -> System.out.println(p.j); System.out.println(p.geti()); 输出父类的j、父类的i。
1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。
Answer:
不能通过编译,提示The type Parent is not visible;
原因:
- Parent类默认访问权限是该包内的可以访问,而 OutOfParentPackage.java 不在 com.parent包中,显然不能访问。
更改:
- 可以将 OutOfParentPackage.java 放入 com.parent包中;
- 根据提示,将 Parent类声明为 public,并将其相应的j、geti()属性声明为 public。
1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办
Answer:
protected的访问范围是本类,同一个包或是子类,所以要访问protected修饰的属性或方法可以在同一个类中调用protected修饰的属性或方法,火灾同一个包中或是子类中调用protected修饰的属性或方法
二、abstract进阶:阅读GuessGame抽象类的设计与使用源代码
2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?
Answer:
在未改造前,只能在控制台输出,在改造后,使用抽象类,可以在控制台,也可以使用对话框图形界面等输入,给人多种的方式选择输入,不必只局限于控制台输出
2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?
Answer:
可以用java.awt.*包来设计图形界面,是java抽象窗口工具包,提供如Button(按钮)、TextField(文本框)和List(列表)等的图形
2.3 结合该例子,你觉得什么时候应该使用abstract?
Answer:
abstract用于抽象类,主要是声明却没实现其功能,可以在声明自己想实现的功能时就使用adstract,就像求面积和 和 周长和,可以先声明,之后再想如何实现功能,在本例子中,public abstract void print,public abstract void println和public abstract int nextInt就先声明,在子类ConsoleGame类中则在对其补充(覆盖)
2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。
Answer:
不变的是在随机产生的0到9的数字的猜测,改变的是public abstract void print,public abstract void println和public abstract int nextInt三个抽象方法的声明,并且ConsoleGame类继承GuessGame类,在ConsoleGame类中三个抽象方法得到实现。
三、Comparable与Comparator
3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?
Answer:
此接口强行对实现它的每个类的对象进行整体排序;在类中实现Comparable接口后,调用Arrays.sort()时,传入的是对象,根据指定比较器产生的顺序对指定对象进行排序
3.2 有了Comparable接口为什么还需要Comparator接口呢?
Answer:
Comparator的实现是要再写一个类后在编写Comparator方法,可以说是一个专用的比较器,当对象不支持自比较函数或者自比较函数不满足要求时(即不能通过Comparable实现对象的排序),可以写一个比较器来完成两个对象之间大小的比较
四、面向接口案例分析
阅读Case-StudentDao.zip案例
4.1 画出类关系图,描述每个类与接口的作用。
Answer:
- StudentDaoArrayImpl类作用:
public StudentDaoArrayImpl设置一个长度为size的students数组;public Student readStudent输入一个名字,若students数组中有学生的name与输入的名字相等,则返回该学生,否则返回null;public boolean writeStudent输入一个学生,若数组中有空位(null),则把此学生加入students数组,并返回true,否则返回false;public void diplayAllStudent()输出全部的学生 - StudenDaoListImpl类作用:
设置一个以Student对象的ArrayList,并命名List;public Student readStudent输入一个名字,若List中有学生的name与输入的名字相等,则返回该学生,否则返回null;public boolean writeStudent输入一个学生,加入List,并返回true;public void diplayAllStudent()输出List的全部学生 - Studen类作用:
用来创建对象,属性为学生的名字,创建对象的名字并覆盖toString方法 - public interface StudentDao接口:
抽象类,声明public Student readStudent,public boolean writeStudent和public void diplayAllStudent()三个抽象方法
4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?
Answer:
public interface StudentDao接口:抽象类,声明public Student readStudent,public boolean writeStudent和public void diplayAllStudent()三个抽象方法
五、什么是面向接口编程?面向接口编程的好处是什么?
结合题目3与4中的Test.java的代码讨论分析。不要百度原封不动照搬!
- 面向接口编程:实现一个系统的时候,将方法的声明与实现分开,使用接口,让类实现接口,接口中是抽象方法,在类中实现该方法,这样方法声明与实现就可分开来
- 面向接口编程的好处:在修改某个模块时,不必引起其他模块的大改
- 在Test.java中,实现学生的存储,只需要实现学生的输入,查找和输出即可,还未决定如何实现,也就是StudentDao接口的三个抽象方法,一开始用数组来实现功能,若要改变成ArraysList的存储方式,不需要将main里的函数大浮动改动,只需再写一个类来实现,main由于是调用StudentDao接口的抽象方法,所以不用改动现有代码,在观看代码时也很容易理解
3. PTA实验总结及码云上代码提交记录
3.1本周Commit历史截图
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图,如下图所示

3.2 PTA 实验总结
- 建立类实现Comparable接口 语法:[修饰符] class 类名 implements<类名>{} 5.1对Comparable进行改写,用于对象的名字的排序,调用方法Arrays.sort(数组),实现多个接口,implements +接口1,接口2......。若是使用ArrayList来进行排序,则调用的方法改为Collections.sort(),结果一样
- 建立类实现Comparator接口 与Comparable接口不同,这是个专门的比较器,需要另写类来实现(Comparable接口的方法compareTo只需在建好的类中编写),编写两个类:NameComparator和AgeComparator,在调用时的区别就是加入该类,Arrays.sort(数组.new NameComparator())和Arrays.sort(数组.new AgeComparator())实现对象的name属性的排序和对象的age属性的排序。若使用ArrayList,则调用的方式为Collections.sort(ArrayList,接口)
- 接口匿名内部类,直接调用接口方法,语法 Interface i=new Interface{抽象方法}; 最后一定要有";" ,或者直接 new Interface{抽象方法}
201521123019 《Java程序设计》第5周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- Python 3.X安装配置
0x01 安装Python 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的. 本教程安装的是python-3.6.1-amd64版本. Python官网:https ...
- MSCI 成份股 清单
中国加入msci最新消息,MSCI官方6月21日公布将A股纳入新兴市场指数.值得注意的是,今年3月23日,MSCI曾公布了咨询文件,建议只纳入可以通过沪股通和深股通买卖的大盘股,剔除了两地联合上市的公 ...
- 音频软件开发中的debug方法和工具
本文系作者原创.如转载,请注明出处. 谢谢! 音频软件开发同其他软件开发一样,都需要去调试.音频软件调试同其他软件调试方法有相同的地方,也有不同的地方,同时调试时还需要借助一些专门的工具,有了这些方法 ...
- Android中的文件下载——DownLoadManager
一.问题概述 在android开发中,经常会使用到文件下载的功能,比如app版本更新等.在api level 9之后,android系统为我们提供了DownLoadManager类,这是android ...
- ASP.NET MVC最新特性
问题: 既然我说对ASP.NET MVC很熟很懂,对新技术很感兴趣,那么问题是: 当前最新版MVC是什么?你用的哪个版本?相比前一个版本有什么新的特性? 解析: 在面试的时候,为了争取面试官的好感,显 ...
- servlet以及HTML中路径问题
路径问题: ①相对路径和绝对路径: 绝对路径:绝对路径是以/开头的路径! 相对于当前服务器的绝对路径:如果是服务器解析,那么/就代表当前服务器的绝对路径:http://localhost:8080 相 ...
- 无法远程连接mysql,连接后也没有权限创建数据库
问题现象:无法远程连接mysql,连接后也没有权限创建数据库 问题原因: MySql-Server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问. 这对于 Web- ...
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
- Node.js之断言处理
Node.js之断言处理 在Node.js中,可以利用assert模块进行断言处理,如果判断错误,则抛出AssertError异常 1 equal方法与notEqual方法 equal方法用于判断两个 ...
- 【Centos7】安装nginx
1.安装必要的rpm yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 2.安装PCRE : 作用 ...