1. 本周学习总结
1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。
2. 书面作业
Q1:clone方法
1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
答:protected是将该方法定义为受保护的,顾名思义,也就是说不能被轻易访问,所以在自定义的类中覆盖clone方法时需要将克隆操作设为public,否则将无法访问。
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。
答:一般对以下两种情况的方法使用protected进行修饰
①当需要在相同的包中可以直接存取某方法的时候使用protected进行修饰该方法。
②当需要在不同包中的类可以在继承后的子类直接存取时使用protected进行修饰该方法。
在作业中,Circle、Rectangle都继承Shape类,所以有getPerimeter和getArea方法,若想让其隐秘一点,就使用protected修饰。
1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?
答:不能成功,因为clone方法被protected修饰在不同包中的类只能在继承后的子类中直接存取。
Q2:使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2仅需粘贴关键代码与运行结果,图片不要太大。
改写后的关键代码如下:
Comparator<PersonSortable2> NameComparator=(o1,o2)-> o1.getName().compareTo(o2.getName());
Comparator<PersonSortable2> AgeComparator=(o1,o2)-> o1.getAge()-o2.getAge();
运行结果如图:
Q3:分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
Comparator
答:shapeComparator所指向的对象是shape类型的,创建了一个Comparator接口。
Q4:GUI中的事件处理
4.1 写出事件处理模型中最重要的几个关键词。
答:关键词:事件源(组件),事件类,监听器。它们之间的关系如下图:
4.2 使用代码与注释,证明你理解了事件处理模型。
代码如下:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Event extends JFrame implements ActionListener {
private JButton jb;
public Event() {
jb = new JButton("确定");
jb.addActionListener(this);
this.add(jb);
this.setSize(300, 200);
this.setDefaultCloseOperation(3);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
this.jb.setText("事件已响应");
}
public static void main(String[] args) {
new Event();
}
}
Q5:结对编程:面向对象设计(大作业2-非常重要,未完成-2)继续完善上周的项目作业。