zoukankan      html  css  js  c++  java
  • 201521123038 《Java程序设计》 第六周学习总结

    201521123038 《Java程序设计》 第六周学习总结


    1. 本周学习总结

    2. 书面作业

    1.clone方法

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

    如果要在子类中覆盖clone方法,则该方法要被public修饰。
    如果要拷贝的类型是基本数据类型,可以直接进行简单的拷贝。但是如果是引用类型,如String类型,那么有两种拷贝方式,深拷贝和浅拷贝。

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

    被protected修饰的方法对本包可见,对该方法所在类的子类也是是可见的,但是不可以被外部包访问。在Shape中定义的抽象类Shape中定义的抽象方法getPerimetergetArea都可以用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

  • 相关阅读:
    SQL 使用identity(int,1,1)来产生行号。
    SQL DateName\DatePart 返回表示指定date的指定datepart的字符串
    让我们受用一生的好习惯
    SCRUM软件开发过程(转)
    计算机英语词汇
    oral English英语绕口令(转)
    Setup相关经验总结
    与老外吵架之必会109句
    BAT批处理文件语法(转)
    SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
  • 原文地址:https://www.cnblogs.com/sakurai3104/p/6658217.html
Copyright © 2011-2022 走看看