201521123079《java程序设计》第6周学习总结
1. 本周学习总结
1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。
注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。
注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。
2. 书面作业
1.clone方法
1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
- 由于clone方法被protected修饰,所以只允许本包和子类访问,,所以在覆盖时将其修饰为public即可。
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。
- 根据protected修饰符的概念,很显然,那些需要被子类使用的方法需要用protected修饰。
- Circle、Rectangle都继承Shape类,所以有getPerimeter和getArea方法,所以他们都可以用protected修饰。
1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?
- clone被protected修饰,而又不在同一个包中调用,所以很显然不能成功。
2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
仅需粘贴关键代码与运行结果,图片不要太大。
匿名内部类
Comparator<PersonSortable> nameComparator =
new Comparator<PersonSortable>(){
@Override
public int compare(PersonSortable o1, PersonSortable o2) {
return o1.getName().compareTo(o2.getName());
}
};
Comparator<PersonSortable> ageComparator =
new Comparator<PersonSortable>(){
@Override
public int compare(PersonSortable o1, PersonSortable o2) {
if (o1.getAge() < o2.getAge()) {
return -1;
} else if (o1.getAge() > o2.getAge()) {
return 1;
} else {
return 0;
}
}
};
Lambda表达式
Comparator<PersonSortable> NameComparator=(o1,o2)-> o1.getName().compareTo(o2.getName());
Comparator<PersonSortable> AgeComparator=(o1,o2)-> o1.getAge()-o2.getAge();
运行结果:
3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
@Override
public int compare(Shape o1, Shape o2) {
//你的代码
}
};
- shapeComparator所指向的对象实现了Comparator接口,使用匿名内部类重写接口方法。
4.GUI中的事件处理
4.1 写出事件处理模型中最重要的几个关键词。
- 事件源
- 事件对象
- 事件监听器
4.2 使用代码与注释,证明你理解了事件处理模型。
看的PPT里有一段代码:
import java.awt.event.*;
import javax.swing.*;
public class Tester {
public static void main(String[] args) {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b = new JButton("Press Me!");/*在这里定义了一个事件,也就是事件源*/
b.addActionListener(new ButtonHandler());/*插入了一个监听器*/
f.add(b);f.setSize(200, 100);f.setVisible(true);
}
3. 码云上代码提交记录及PTA实验总结
题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类
3.1. 码云代码提交记录
3.2. PTA实验
这次实验主要是关于接口和静态内部类的,5-3主要是对ArrayIntegerStack的重写,其中用栈这块个人比较难理解,又去翻了会数据结构的书,才勉强明白一点。