201521123038 《Java程序设计》 第六周学习总结
201521123038 《Java程序设计》 第六周学习总结
1. 本周学习总结
2. 书面作业
1.clone方法
1.1 Object对象中的 clone
方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
如果要在子类中覆盖clone方法,则该方法要被public修饰。
如果要拷贝的类型是基本数据类型,可以直接进行简单的拷贝。但是如果是引用类型,如String类型,那么有两种拷贝方式,深拷贝和浅拷贝。
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape
为例说明。
被protected修饰的方法对本包可见,对该方法所在类的子类也是是可见的,但是不可以被外部包访问。在Shape中定义的抽象类Shape中定义的抽象方法getPerimeter
和getArea
都可以用protected来修饰,对子类Rectangle和Circle是可见的。
1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected
类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?
提示错误:Unhandled exception type CloneNotSupportedException
。因为在调用clone的类中没有实现Cloneable接口。这边提示了两种修改方法。顺便测试一下深浅拷贝。
第一种:
第二种:
但是显示都是浅拷贝,因为在重写clone的时候没有对String类的name进行处理。
2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
仅需粘贴关键代码与运行结果,图片不要太大。
用匿名类与Lambda表达式重写排序方法:
可以直接在类中重写方法:
public static Comparator<PersonSortable2> NameComparator=(o1,o2)->
{
return o1.getName().compareTo(o2.getName());
};
public static Comparator<PersonSortable2> AgeComparator=(o1,o2)->
{
return o1.getAge()-o2.getAge();
};
也可以在main中调用排序的时候写方法:
Arrays.sort(list,(o1,o2)->o1.getName().compareTo(o2.getName()));
Arrays.sort(list,(o1,o2)->o1.getAge()-o2.getAge());
运行结果:
3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
Comparator<Shape> shapeComparator = new Comparator<Shape>(){
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};
用匿名内部类的方法编写,让shapeComparator实现Comparator接口,可以直接通过Arrays.sort进行排序。
4.GUI中的事件处理
4.1 写出事件处理模型中最重要的几个关键词。
在java中的事件处理模型,包括三部分:事件源—事件对象—事件监听器
4.2 使用代码与注释,证明你理解了事件处理模型。
拿老师的参考视频做个例子:
private void calActionPerformed(java.awt.event.ActionEvent evt) {
String a=aTextField.getText();//输入字符串a
String b=bTextField.getText();//输入字符串b
result.setText(a+b);//合并字符串
}
这是一个鼠标点击JButton触发的事件。在输入框中输入字符串a和b,通过点击按钮执行代码,目的在于将输入的字符串a和b合并,并在标签result里输出。
5.结对编程:面向对象设计(大作业2-非常重要,未完成-2)
继续完善上周的项目作业。考核点如下:
5.1 尝试使用图形界面改写。
用图形界面做了购物界面和购物车界面,但是两个界面之间的跳转目前还没有实现,购物车界面的输出上还有问题。
5.2 给出两人在码云上同一项目的提交记录截图。
5.3 与上周相比,项目的主要改动是什么?
- 首先是对上周的代码进行调整,完善了一下购物车类的设定
- 其次是用图形界面改写程序,原来的程序不一定适用于图形界面,要根据界面设计进行调整,图形界面的一些功能实现和预想中的相比还是有难度的。
3. 码云上代码提交记录及PTA实验总结
3.1. 码云代码提交记录
3.2. PTA实验
1.编写栈用
ArrayList
比用数组更容易,因为栈有先进后出的特点,而ArrayList
中的添加删除等都有直接的代码可以应用于头尾位置,用数组编写需要定义栈顶指针,并且在操作中要处理指针的移动情况。在编写的过程中也要考虑入栈出栈为null
的情况。2.使用匿名类与Lambda表达式简化代码,可以直接写在排序语句内。例:
Arrays.sort(list,(o1,o2)->o1.getAge()-o2.getAge());
3.参考链接:谨慎地覆盖clone
201521123038 《Java程序设计》 第六周学习总结的更多相关文章
- 201521123038 《Java程序设计》 第二周学习总结
201521123038 <Java程序设计> 第二周学习总结 1.本章学习总结 学会在Java程序中使用函数,使程序层次更清晰 使用StringBuilder编写代码,减少内存空间的占用 ...
- 201521123038 《Java程序设计》 第一周学习总结
201521123038 <Java程序设计> 第一周学习总结 1.本章学习总结 本周已掌握Java配置,初步认识Java运行软件和基本语法. Java语言语法和C语言基本类似,部分不同. ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
随机推荐
- [Poi2010]Monotonicity 2 线段树
这道题考试的时候先打了个dfs暴力.又打了个O(n²)的动规.然后竟然心血来潮拍了一下..明明知道过不去的...然后水了50分(20个测试点这么多啊啊啊啊). 因为它已经提前给你如果长度为i时下一位的 ...
- Struts2框架入门
1.1 Struts2概述: 是一个遵循WEB层规范的MVC设实现,该框架基本上借鉴了WebWork框架的体系结构,只吸收了少部分Struts1的优点.是目前JAVA EE项目中WEB层事实上的工业标 ...
- 【有意思的BUG】默认置灰的属性的值传递
数据由Client发送给Server,如下图所示,Server在收到请求后会响应Client. 比如Client发送给Server一组数据:Name:sean&Hobby:movies& ...
- Maven干货
好处: 1. 依赖管理:对jar包统一管理 2. 项目构建: 项目编码完成后,对项目进行编译.测试.打包.部署.之前项目构建通过eclipse工具实现.今天学习新的工具也可以实现这些过程.比如:通过m ...
- MySQL root密码忘记解决
--MySQL root密码忘记的解决办法 -----------------------------------2014/03/14 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接My ...
- python基础笔记(一)
python解释器执行python程序的过程:python3 C:\test.py 1.启动python解释器(内存中) 2.将C:\test.py 内容从硬盘读入内存(这一步与文本编辑器是一样的) ...
- 小白对Salesforce的简单认识(01)
1. Salesforce为我们提供的服务? Salesforce基于云平台为我们提供SAAS和 PAAS服务. SAAS(Salesforce.com is Software as a Servic ...
- ReactiveCocoa应用篇(二)
上一篇介绍了ReactiveCocoa的常用类,已经基本满足项目中的简单应用要求,但是针对复杂的功能还需要其它的类来协同处理.ReactiveCocoa提供了强大的流程处理功能来解决复杂的问题,包括事 ...
- Ext.NET加入自定义验证JS函数
ExtJS验证很方便,在使用FormPanel的时候,我们可以很方便的进行验证.比如设置必填项.正则.字段类型等等.比如如下所示: 上面的验证是这么写的: 1 2 3 <Listeners> ...
- 设计模式的征途—20.备忘录(Memento)模式
相信每个人都有后悔的时候,但是人生并无后悔药,有些错误一旦发生就无法再挽回,有些事一旦错过就不会再重来,有些话一旦说出口也就不可能再收回,这就是人生.为了不让自己后悔,我们总是需要三思而后行.这里我们 ...