• 1. 本周学习总结

  • 1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。

注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。

注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。


  • 2. 书面作业

①clone方法

  • 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?

A:

在自定义的类中覆盖clone方法时需要注意:首先明确通常我们利用Object类的clone方法是为了获取对象的一份拷贝。Object对象中的clone方法是被protected修饰,而为了让其它类能调用这个clone类的clone()方法,我们在重载之后应该把clone()方法的属性设置为public。

  • 1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。

A:

在Shape里,有private double width; private double length; private double radius;使用了private进行修饰,而width、length和radius都为变量,又通过了public double getWidth()、public double getLength()、public double getRadius()来获取到它们,故此时应将她们改为是用protected进行修饰,为protected double width; protected double length; protected double radius;即可。

通过举例,我们可得出这样的结论:是用protected进行修饰的成员是半公开的,外界无法直接访问这个的成员,但可以对当前类,同包类或者子孙类继承或使用,故此对被它修饰的成员变量起到了保护作用。

  • 1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?

A:

不能成功。调用方法时发现不在同一个包内,若想实现调用,应先调用包。


②使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2

仅需粘贴关键代码与运行结果,图片不要太大。

匿名类关键代码:
Comparator<PersonSortable2> NameComparator = new Comparator<PersonSortable2>() {
public int compare(PersonSortable2 o1,PersonSortable2 o2) {
if (o1.getName().compareTo(o2.getName()) > 0) return 1;
if (o1.getName().compareTo(o2.getName()) < 0) return -1;
return 0;
}
};
Comparator<PersonSortable2> AgeComparator = new Comparator<PersonSortable2>() {
public int compare(PersonSortable2 o1,PersonSortable2 o2) {
if (o1.getAge() > o2.getAge()) return 1;
if (o1.getAge() < o2.getAge()) return -1;
return 0;
}
};
Lambda表达式关键代码:
新建:
Comparator<PersonSortable2> NameComparator=(o1,o2)-> o1.getName().compareTo(o2.getName());
Comparator<PersonSortable2> AgeComparator=(o1,o2)-> o1.getAge()-o2.getAge();
调用:
Collections.sort(person,NameComparator);
Collections.sort(person,AgeComparator);

运行结果如下:


③分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?

Comparator<Shape> shapeComparator = new  Comparator<Shape>() {
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};

A:

shapeComparator将Comparator的Compare方法用匿名内部类进行重写,这样能实现Comparator接口并且能使用Arrays.sort进行排序。


④GUI中的事件处理

  • 4.1 写出事件处理模型中最重要的几个关键词。

A:

在java中的事件处理中,包括三部分:

事件源—事件对象—事件监听器

  • 4.2 使用代码与注释,证明你理解了事件处理模型。

A:

看了PPT的MainGUI代码后,根据自己的理解写了个点击鼠标的代码,故挑出如下注释:

JButton button = new JButton("点击鼠标");//这里为事件源,button为源对象

button.getSource();//获取事件源,这个很好理解,就是button为源对象对它get

button .addMouseListener(new MouseAdapter(){代码块;})//对事件源注册监听器,代码块里是实现事件的各种方法

//联系:事件是由事件源所产生的,每一种控件有自己可以识别的事件。而事件发生后会把对象传递给监听器,调用监听器的方法来处理事件。


⑤结对编程:面向对象设计(大作业2-非常重要,未完成-2)

继续完善上周的项目作业。考核点如下:

  • 5.1 尝试使用图形界面改写。

  • 5.2 给出两人在码云上同一项目的提交记录截图。

  • 5.3 与上周相比,项目的主要改动是什么?

在规定时间内实在是写不出完整的。。想弄一个弹窗界面但代码一致卡壳。。。关键的只有下面这么多了。。

    private void namejTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
String name = namejTextField1.getText();
if(name.equals("")){
JOptionPane1.showMessageDialog(null,"账号不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
String pwd = pwdjTextField1.getText();
if (pwd.equals("")){
JOptionPane1.showMessageDialog(null,"密码不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
public void btnreset_ActionEvent(ActionEvent e){
namejTextField1.setText("");
pwdjTextField1.setText("");
}

  • 3. 码云上代码提交记录及PTA实验总结

题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类

  • 3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

  • 3.2. PTA实验

函数(选做:4-1)、编程(5-3, 5-4)

一定要有实验总结

A:

5-3.这道题最主要的是判断栈满栈空,当时写的时候把栈满和提取栈顶元素的代码写重复了。。。就莫名花了很多时间在这上面。还有就是重写方法的时候不太熟练,有时会卡。

5-4.这道题是创建静态内部类,首先要明确静态内部类不能直接访问外部类的非静态成员,要new之后才可以。。匿名内部类在写的时候不太熟悉,百度了很多。


201521123010 《Java程序设计》第6周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Java 线程宝典

    此文 为垃圾文 本人复习用的 emmm 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程 并行与并发: 并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时. 并发:通过cpu ...

  2. 【机器学习笔记之三】CART 分类与回归树

    本文结构: CART算法有两步 回归树的生成 分类树的生成 剪枝 CART - Classification and Regression Trees 分类与回归树,是二叉树,可以用于分类,也可以用于 ...

  3. pentaho之kettle篇---kettle基本操作

    今天先来做一个简单的kettle的例子. 打开输入,选择CSV文件输入. 双击CSV文件输入图标,可以看见如下: 步骤名称:就是你这一步的名字,可以任意取,原则就是要明白,清楚这一步是做了什么操作. ...

  4. Webservice 中涉及的几个概念

    开发webservice有一段时间了.但是对其中的协议及实现一直存在疑惑.这里搜集相关概念.用以更好的理解它. 一.什么是Webservice WebService是一种跨编程语言和跨操作系统平台的远 ...

  5. Jedis与Redisson选型对比

    1 概述 1.1.       主要内容 本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为无线云管理项目中Redis编程模型的选择提供参考. 2.    ...

  6. 多线程(五) java的线程锁

    在多线程中,每个线程的执行顺序,是无法预测不可控制的,那么在对数据进行读写的时候便存在由于读写顺序多乱而造成数据混乱错误的可能性.那么如何控制,每个线程对于数据的读写顺序呢?这里就涉及到线程锁. 什么 ...

  7. 如何搭建个人博客网站(Mac)

    一直以为自己记忆力很好,毕业之后才发现,之前需要看一遍就能记住的东西,现在看两三遍才能有印象.而搞技术的,如果不及时的记录下当时的情景,过后很容易就忘记.所以,再次萌生了搭博客.写文章的想法(之前用D ...

  8. sizeof求类的大小

    用sizeof求类的大小,http://blog.csdn.net/szchtx/article/details/10254007(sizeof浅析(三)——求类的大小),这篇博文给出了非常详尽的举例 ...

  9. let 和 var定义变量的区别-盼盼Degenerate

    let和var关键字的区别 声明后未赋值,表现相同 (function() { var varTest; let letTest; console.log(varTest); //输出undefine ...

  10. Linux sort命令中文手册(info sort翻译)

    说明: (1).本手册只挑选了有用的信息进行翻译,如要查看完完整整的内容,请自行info sort. (2).译文中,在括号中使用了"注"的,为本人所加,非原文内容,助于理解和说明 ...