201521123040 《Java程序设计》第6周学习总结

时间:2023-01-16 21:09:04

1.本章学习总结

1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。

201521123040 《Java程序设计》第6周学习总结

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

201521123040 《Java程序设计》第6周学习总结