201521123087 《Java程序设计》第5周学习总结
1. 本周学习总结
2. 书面作业
代码阅读:Child压缩包内源代码
1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。 答:不能,语句System.out.println(i);中的i会出现错误,子类child文件继承父类parent,在parent文件中语句private int i=1i是私有的,必须改成protected,方可执行。 执行结果: 1 2 2 1 1 2 1。
1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。 答:另外一个包中的OutOfParentPackage.java,不能编译通过,提示的错误是The type Parent is not visible.发生这个错误的原因在于Parent类不是public的。
1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办? 答:protected修饰的属性以及方法只能在同一个包内的其他类或子类调用。abstract进阶:阅读GuessGame抽象类的设计与使用源代码
2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢? 答: 改造前的这串代码在设计出来的时候就已经固定了它只能通过控制台进行输入,相当于被控制台所束缚。改造后将GuessGame类、print方法和nextInt方法定义为抽象类,这样整个程序的执行方式就不再是确定的控制台输入输出,我们具体需要在什么环境下运行它的话只需要创建出一个实例就可以运行,这样做不仅方便在想要的环境下运行,还可以节省代码的冗余。
2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作? 答:因为游戏的流程是一样的,所以只需将游戏的输入和输出操作改成图形界面里的输入输出就可以了。
2.3 结合该例子,你觉得什么时候应该使用abstract? 答:在这个例子中,因为这个游戏被设计出来的时候并没有指明它要在什么环境、使用什么方式输入、怎样输出,这时我们并不明白它的具体实现时,我们就应该就把它定义为abstract,由于方法被定义为abstract,所以类也要是abstract类。
2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。 答:本例中,在修改前和修改后的两个文档中,很明显可以看出采取了两种不同的输入方法,因此我认为变化的是输入方法;而没有变化的是抽象类。抽象类只实现抽象方法,继承类可以不实现。抽象类不能被实例化,只能被继承象类的作用是普通类无法替代的,抽象类的作用主要是提供一种模版。抽象类中的方法可以被具体实现,并且继承的类可以重写其方法。一个类可以继承一个抽象类,但是可以继承多个接口。接口被运用于实现比较常用的功能,便于日后维护或者添加删除方法,而抽象类更倾向于充当公共类的角色。我的理解是这样的:抽象类和抽象方法就像一个模型,而真正的实物是在此模型的基础上加以装饰,使得每一个真正的实物都是独一无二的,假如没有了模型,就相当于没有了模板,那么想要造出一个好看的实物来就比较难了,而且每次在造一个新的实物时都需要不停的重复相同的基础步骤,这样会让过程显得特别繁琐。Comparable与Comparator
3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序? 答:Comparable接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序类的compareTo方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过Arrays.sort进行自动排序,在调用Arrays的sort()时将排序类对象作为参数传入。也就可以按照多种方式排序,只需创建一个实现Comparator接口的排序方式类,然后将其对应的对象传到Arrays.sort。
3.2 有了Comparable接口为什么还需要Comparator接口呢?
答:Comparable接口和Comparator接口的作用都是用来实现集合中的排序的,只是Comparable是在集合内部定义的方法实现排序,而Comparator是在集合外部实现的排序。所以如果想对结合排序,需要在集合外定义Comparator接口的方法或在集合内部实现Comparable接口的方法。面向接口案例分析
阅读Case-StudentDao.zip案例
4.1 画出类关系图,描述每个类与接口的作用。 答:
Student是一个关于名字属性的类。StudentDao接口中有writeStudent和readStudent以及diplayAllStudent方法。StudentDaoArrayImpl是对StudentDao接口的操作,其中由了Student readStudent和boolean writeStuden以及void diplayAllStudent()等方法。StudenDaoListImpl是对StudentDao接口的另一个操作,包含Student readStudent(String name) 和boolean writeStudent(Student student) 以及void diplayAllStudent()等方法。
4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别? 答:StudenDaoListImpl使用动态容器ArrayList,而StudentDaoArrayImpl使用的是固定了大小为80的数组。
什么是面向接口编程?面向接口编程的好处是什么?
答:还用PTA的5-2为例,当我不知道要以什么方式排序,只知道需要有排序功能时,那么就必须使用接口告诉编译器,我这个类具有排序的功能,但是具体实现未知,具体实现之后再写。面向接口编程就是说我有这个功能,但是具体实现不知道,在设计时必须要考虑到各种功能,但是却不需要每一个都具体写出来,在做项目时让逻辑更清晰明白。
3. 码云上代码提交记录及PTA实验总结
3.1. 码云代码提交记录
3.2. PTA实验 暂时不会
201521123087 《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实战===使用smtp发送邮件的源代码,解决554错误码的问题,更新版!
import smtplib from email.mime.text import MIMEText from email.header import Header import time #密文输 ...
- Oracle基础--命令
====================== 基础命令====================== 1.su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界 ...
- thymeleaf模板引擎入门
ThymeLeaf是什么 Thymeleaf是一个用于服务器端的java模板引擎,它使用简单但功能强大,目前可以处理的模板类型包括:HTML.XML.TEXT.JavaScript.CSS等. 搭建t ...
- MYSQL事务及存储引擎对比
Innodb支持事务,而myisam不支持事务. 事务的定义: 当多个用户访问同一份数据时,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据的更新从一个一致性状态变更为另一个一致性 ...
- Apache Kafka系列(四) 多线程Consumer方案
Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 Apache Kafka系列(四) 多线程 ...
- RabbitMQ --- Routing(路由)
目录 RabbitMQ --- Hello Mr.Tua RabbitMQ --- Work Queues(工作队列) RabbitMQ --- Publish/Subscribe(发布/订阅) 前言 ...
- easyui 时间段校验,开始时间小于结束时间,并且时间间隔不能超过30天
//对easyui datetimebox的验证,开始时间要小于结束时间function validateDateTime(beginTimeId,endTimeId,whichTimeId){ co ...
- Linux主分区,扩展分区,逻辑分区的联系和区别
主分区,也称为主磁盘分区,和扩展分区.逻辑分区一样,是一种分区类型.主分区中不能再划分其他类型的分区,因此每个主分区都相当于一个逻辑磁盘(在这一点上主分区和逻辑分区很相似,但主分区是直接在硬盘上划分的 ...
- selenium元素定位大全
要做自动化,首先要了解页面结构,要了解页面结构,就要了解页面元素的定位方法 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合B ...
- Form表单提交,Ajax请求,$http请求的区别
做过前端同学想必都避免不了要和后台server打交道.而以下这三种与后台交互的方式想必大家都不陌生. Form表单提交,Ajax请求,Angular的$http请求 以前一直搞不清楚什么时候应该用哪种 ...
