1、接口关键字 interface
2、接口当中的方法, 全部不能有具体的 实现
都是抽象方法–默认的public abstract
3、阿里巴巴:接口当中的方法尽量简洁
4、接口中的成员变量默认是public static final必须初始化
5、类和接口之间的关系-》实现
6、只要普通类实现接口中的方法,那么接口当中的所有方法必须重写
7、接口是不能实例化的
8、接口可以继承多接口,不能实现接口
面试题:
抽象类和接口的区别?
- 抽象类要被子类继承,接口要被类实现
- 接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现
- 接口里定义的变量只能是公共的静态常量,抽象类中的变量是普通变量
- 接口是设计的结果,抽象类是重构的结果
- 抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量
重写和重载的区别?
9、自定义类型进行排序时,一定要implements Comparable接口中的comparaTo接口
8、字符串大小比较用comparaTo方法
class Student implements Comparable<Student>{
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
@Override
public int compareTo(Object o) {
StudentPerson stu=(StudentPerson)o;
if(this.score>((StudentPerson) o).score){
return -1;
}else if(this.score<((StudentPerson)o).score){
return 1;
}else {
return 0;
}
}
@Override
public String toString() {
return "[" + this.name + ":" + this.score + "]";
}
}
class A{
public static void sort(Comparable[] array) {
for (int bound = 0; bound < array.length; bound++) {
for (int cur = array.length - 1; cur > bound; cur--) {
if (array[cur - 1].compareTo(array[cur]) > 0) { Comparable tmp = array[cur - 1];
array[cur - 1] = array[cur]; array[cur] = tmp;
}
}
}
}
public static void main(String[] args){
Student[] students = new Student[] {
new Student("张三", 95),
new Student("李四", 96),
new Student("王五", 97),
new Student("赵六", 92),
};
Arrays.sort(students);
System.out.println(Arrays.toString(students));
}
- Cloneable接口
Cloneable接口是一个空接口,当中没有抽象方法
空接口(标记接口-》标志当前类可以进行克隆