201521123040 《Java程序设计》第6周学习总结
1.本章学习总结
1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。
2. 书面作业
clone方法
1.1 Object对象中的clone
方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
(1)protected修饰的方法只允许其子类调用,而外部类则是不允许调用该方法的。
(2)利用Object类的clone方法,自定义类中的方法的名称要与Object.clone中的名称相同。
(3)其返回值必须和被覆盖的方法的返回值一致
1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。
只想限制其朋友类和子类访问时,而不允许其他外部类访问时,可采用protected修饰,这样还可以保护它,不让它被其他类调用。
阅读作业Shape代码,可以看出getPerimeter和getArea两个方法分别计算周长与面积,是其和其子女的特性,应该为其和继承其的子女类使用且不为其他类所调用,故用protected修饰。
1.3 在test1包中编写简单的Employee
类,在test2包中新建一个TestProtected
类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?
不能成功。首先两个类不在一个包中,test2也并没有import test1包,故无法获取该类,其次TestProtected
类应继承Employee类才可调用其方法。
2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
public static void main(String[] args) { //将内部类改写为内部匿名类 Comparator<PersonSortable2> NameComparator=(PersonSortable2 o1, PersonSortable2 o2)->{ if(o1.getName().compareTo(o2.getName())>0){ return 1; }else if(o1.getName().compareTo(o2.getName())<0){ return -1; } else { return 0; }; Arrays.sort(person,NameComparator); }
3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
Comparator<Shape> shapeComparator = new Comparator<Shape>() { @Override public int compare(Shape o1, Shape o2) { //你的代码 } };
shapeComparator所指向的对象实现了Compatator接口,并在其匿名内部类中将compare方法实现(实际过程为重写),使该抽象方法可以通过Collection.sort进行调用。
4.GUI中的事件处理
4.1 写出事件处理模型中最重要的几个关键词。
事件,事件源,事件监听器。
4.2 使用代码与注释,证明你理解了事件处理模型。
public static void main(String[] args) { btn = new JButton("this is a btn");//创建一个按钮用以监听事件 //实现监听器接口并编写监听器绑定事件 btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("hello world"); } }); }
实验总结
1.内部类使用的时候,需要先创建外部类才能实现。
2.内部类可以是静态static的,也可用public,default,protected和private修饰。
3.内部类的方法名可以和外部类的相同。
码云上代码提交记录及PTA