201521145048《Java程序设计》第6周学习总结
as
1. 本周学习总结
2. 书面作业
Q1.clone方法
1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。
1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?
1.1、要重写clone方法,最好用public修饰,要实现Cloneable接口
1.2、 protected的访问权限是本类,同包和子类,根据protected所规定的访问范围,有些方法只想让同包的类和子类访问时采用protected修饰。以Shape为例,getPerimeter与getArea分别为计算面积与周长的方法,很明显只有继承了Shape的子类才具有这两种方法,因此可用protected修饰。
1.3、这俩类不在一个包内,也不是继承关系,不能编译通过。
Q2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
仅需粘贴关键代码与运行结果,图片不要太大。
匿名内部类
Arrays.sort(s, new Comparator<PersonSortable2>() {
public int compare(PersonSortable2 arg0, PersonSortable2 arg1) {
// TODO Auto-generated method stub
return arg0.getName().compareTo(arg1.getName());
}
});
Arrays.sort(s, new Comparator<PersonSortable2>() {
public int compare(PersonSortable2 arg0, PersonSortable2 arg1) {
// TODO Auto-generated method stub
return arg0.getAge() - arg1.getAge();
}
});
Lambda表达式
Arrays.sort(person,(o1,o2)->o1.getName().compareTo(o2.getName()));
Arrays.sort(person,(o1,o2)->o1.getAge()-o2.getAge());
运行结果
Q3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
答:shapeComparator所指向的对象只是为了实现Comparator接口,对继承方法的调用或覆盖,大部分匿名内部类用于实现接口,在运行时,类为实现这个接口的类,类名没有太大的意义
Q4.GUI中的事件处理
Comparator<Shape> shapeComparator = new Comparator<Shape>() {
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};
4.1 写出事件处理模型中最重要的几个关键词。
4.2 使用代码与注释,证明你理解了事件处理模型
4.1、事件处理三个部分:事件源—事件对象—事件监听器
4.2、
private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {
String a=aTextField.getText();//得到aTextField输入的字符串
String b=bTextField.getText();//得到bTextField输入的字符串
double da=Double.parseDouble(a);
double db=Double.parseDouble(b);
resultLabel.setText(""+(da+db));//JLabel得到两个double数字的和
}
//JButton的功能,在里面输入想要实现的功能,在运行时按下按钮触发事件,实现功能,例如本代码,实现输入两个数字字符串,并转换为double数字,并相加
3. 码云上代码提交记录及PTA实验总结
题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
3.2. PTA实验
函数(选做:4-1)、编程(5-3, 5-4)
一定要有实验总结
5.3、rrayIntegerStack,功能与栈一样,在内部建立一个数组和一个标记top,记录栈顶位置,判断是否栈空或栈满,之前遇到的麻烦是如何判断栈空或栈满。就是要注意如果栈为空,则出栈和取栈顶都是无效操作。就是记得判空就好了。否则会报数组越界的错误。
5.4、静态内部类,主要在外部类的方法中,创建内部类对象,使用内部类的属性,与static方法类似。如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员