6.1.1接口概念
接口不是类,而是对类的一组需求描述。
接口绝不能含有实例域。
不能构造接口的对象,但是可以申明接口的变量。
接口变量必须引用实现了接口的类对象。
Java8可以在接口中实现方法。
在实现接口时,必须把方法声明为public;否则,编译器将认为这个方法的访问属性是包可见性,即类的默认访问属性,之后编译器就会给出试图提供更严格的访问权限的警告信息。
在比较大整数时,应该使用Integer.compare;Comparable非负整数,且绝对值不超过(Integer.MAX_VALUE-1)/2;
Double.compare(x,y); Arrays.sort();//排序必须实现Comparable接口
6.1.4静态方法
Java SE8中允许在接口中增加静态方法。
public interface Path{ public static Path get(String frist,String..more){ return FileSystem.getDefault().getPath(first,more); } }
6.1.5接口默认方法
可以为接口方法提供一个默认实现。必须使用default修饰符。
6.1.6解决默认方法冲突
- 超类优先
如果接口类提供了一个具体方法,同名而且有相同参数类型的默认方法会被忽略。
- 接口冲突
如果一个接口提供了一个默认方法,另一个接口提供了一个同名而且参数类型相同的方法,都必须覆盖这个方法来解决冲突。
//一个类扩展了超类,同时实现了一个接口,并从超类和接口继承了相同的方法。 class Student extends Person implements Named{...} //在这种情况,只会考虑超类方法,接口的所以默认方法都会被忽略。