1. 本章学习总结

请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结

2. 书面作业

Q1.clone方法

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

答:在自定义的类中覆盖clone方法时,子类必须实现Cloneable接口,否则即使覆盖了clone()方法,仍然会抛出异常(CloneNotSupportedException)。

(注:参考链接 详解Java中的clone方法 http://blog.csdn.net/zhangjg_blog/article/details/18369201

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

答:被声明为protected的成员,在相同的包中的类可以直接存取,不同的包中的类可以在继承后的子类直接存取。以作业Shape为例,如protected final double PI=3.14;就是希望PI只能够被其他包的子类调用。

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

答:运行结果如下:



显然在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象是无法成功的。protected关键字在不用的包类只有子类可以存取,此时可以用pubilc。

Q2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2。仅需粘贴关键代码与运行结果,图片不要太大。

答:

(1)匿名内部类

Comparator<PersonSortable2> NameComparator = new Comparator<PersonSortable2>() {
   public int compare(PersonSortable2 obj1,PersonSortable2 obj2) {
            if (obj1.getName() .compareTo(obj2.getName()) > 0)
                return 1;
            else if (obj1.getName().compareTo(obj2.getName()) < 0)
                return -1;
            else
                return 0;
        }
    };

Comparator<PersonSortable2> AgeComparator = new Comparator<PersonSortable2>() {
    public int compare(PersonSortable2 obj1,PersonSortable2 obj2) {
          if (obj1.getAge() > obj2.getAge())
                return 1;
          else if (obj1.getAge() < obj2.getAge())
                return -1;
          else
                return 0;
        }
  };

(2)>Lambda表达式:

   Comparator<PersonSortable2> NameComparator=(o1,o2)-> o1.getName().compareTo(o2.getName());
   Comparator<PersonSortable2> AgeComparator=(o1,o2)-> o1.getAge()-o2.getAge(); 

运行结果:

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

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

答:>shapeComparator所指的对象能够实现Comparator接口,使其对象能够使用Arrays.sort进行排序。

Q.4.GUI中的事件处理

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

1) 事件源(Event Source):即事件发生的场所,就是指各个组件,如按钮等,点击按钮其实就是组件上发生的一个事件;
2) 事件(Event):事件封装了组件上发生的事情,比如按钮单击、按钮松开等等;
3) 事件监听器(Event Listener):负责监听事件源上发生的特定类型的事件,当事件到来时还必须负责处理相应的事件;

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

  private void registerListener() {
    BtnListener btnListener = new BtnListener();
    btnFirst.addActionListener(btnListener);
    btnPrevious.addActionListener(btnListener);
   }// 产生一个事件监听器对象

class BtnListener implements ActionListener {
  @Override
   public void actionPerformed(ActionEvent e){
       Object obj = e.getSource();// 获得当前点击的事件源
   if (obj == btnFirst) {
       cardLayout.first(cardPanel);
         }
   else{
       cardLayout.previous(cardPanel);
         }

Q5.结对编程:面向对象设计

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

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

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

答:

登陆界面:



搜索界面:

和上周相比,在同学的帮助下,完善了整个编程设计并用图形界面进行了改写,但是对于图形界面的编程仍然不够熟悉,需要再多思考多实践。

3.本周码云代码Commit历史截图

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

4. PTA实验总结

实验1

1.自定义接口ArrayIntegerStack完成一个能存储Integer元素的栈。同时得知道栈的基本特点,在判断栈满和栈空的时候,容易出错。

实验2

1.静态内部类的熟悉以及使用。

2.在静态内部类中可以定义静态的成员(非静态内部类中不可以)。

3.静态内部类中只能访问外部类的静态成员。

201521123026 《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. NOIP2000提高组 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  2. ThinkSNS+ alpha.2 版本发布,功能抢先看!【社交系统研发日记六】

    今天的研发日记,我们不讲技术,我们来看看,社交系统TS+从今天开始全面内测开始,都发布了什么功能. 其实,alpha.1 早上打的 tag ,晚上因为增加了两个核心功能,所以又打了 alpha.2 t ...

  3. Matlab学习笔记(2)

    1. 在MATLAB中默认最开始出现的是命令窗口,也就是Command Window.对应的文件保存后扩展名一般都 是.mat 真正的程序代码编辑窗口应该新建New Script或者其他的.此时保存的 ...

  4. MyEclipse 护眼配色

    因为长时间对着电脑,白底看着老累眼,所以想把myeclipse全部改成VS的黑主题,但最终无功而返.(读者有修改方案可以推荐给我哈,在此先谢谢了) 除了黑底的颜色主题,其实豆沙绿也是挺柔和的,下面是豆 ...

  5. python--注释

    python中单行注释用#,多行注释用""",看下面的代码: #!/usr/bin/python #coding:utf-8 #编码方式 #打印一行* print &qu ...

  6. 【Oracle】控制文件管理

    /* 控制文件是oracle数据库最重要的物理文件之一,每个oracle数据库都必须有一个控制文件,在启动数据库实例时, oracle会根据初始化参数查找到控制文件的名称及位置信息,并读取控制文件的内 ...

  7. Akka(20): Stream:压力缓冲-Batching backpressure and buffering

    akka-stream原则上是一种推式(push-model)的数据流.push-model和pull-model的区别在于它们解决问题倾向性:push模式面向高效的数据流下游(fast-downst ...

  8. 如何编写更好的SQL查询:终极指南-第一部分

    结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的.对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的.这 ...

  9. 使用adb shell启动特定activity

    使用adb shell启动特定activity Android笔记 使用adb shell可以直接运行某个activity,避免调试过程中修改Manifest文件. 1.在AndroidManifes ...

  10. zetcode :: First programs in PyQt5

    练习代码,详见网站 http://zetcode.com/gui/pyqt5/firstprograms/ import sys from PyQt5 import QtWidgets from Py ...