JAVA 第六章知识回顾与总结
为了克服JAVA单继承的缺点,JAVA引入了接口:
接口不是类,是对类的一组需求的描述,由常量和一组抽象方法组成;接口中所有方法自动的属于public,在接口中声明方法时不必提供关键字public,接口中的域自动设为public static final。接口中绝不能含有实例域,提供实例域和方法实现的任务应该由实现接口的类来完成,因此可以将接口看成没有实例域的抽象类。接口间的定义可以使用继承关系(public interface 接口1 extends 接口2)
让类实现一个接口,必须要做的两个步骤是:(1)将类声明为实现给定的接口 (2)对接口中的所有方法进行定义(将类声明为实现某个接口,需要使用关键字implements)
在接口常量中可以没有final,抽象方法可以没有abstract。
当拷贝一个对象变量时,原始变量与拷贝变量引用同一个对象。如果要创建一个对象新的copy,它的最初状态与original一样,但以后可以各自改变各自的状态,就需要使用Object类的clone方法。Object类中的 clone()方法被protected修饰符修饰。这也意味着在用户编写的代码中不能直接调用它。如果一个类没有实现Cloneable接口,且调用了Object的clone()方法(也就调用了super.clone()方法),那么Object的clone()方法就会抛出CloneNotSupportedException 异常
一个类只能拥有一个方法,但却可以实现多个接口,用逗号将各个接口分隔开
回调:是一种程序设计模式,可以指某个特定事件发生时应该采取的动作。发出通告在java.swing包里有一个Timer类,可以使用它在到达给定时间间隔时发出通告
函数式接口:对于只有一个抽象方法的接口,需要借口对象时,就可以提供一个lambda表达式
定义比较器的方法有三种:(1)传统方法 (2)lambda表达式 (3)逆名内部类