1.适配接口:接口可以允许同一个接口有多个不同的实现。接口的实现和向该方法传递的对象取决于方法的使用者。Scanner的构造方法接受的是一个Readable接口,Readable接口没有任何方法的参数,它是单独为类Scanner创建的。Readable接口只要求实现read()方法,在方法read()内部,将输入内容添加到CharBuffer参数中,没有任何输入时返回-1。
class A4 { public void a() { System.out.println("a()"); } } interface B4 { void b(); } class C4 implements B4 { public void b() { System.out.println("b()"); } } class D4 extends A4 implements B4 { public void b() { super.a(); } } public class Test17 { public static void main(String[] args) { B4 adapter = new D4(); adapter.b(); } }
2.接口中的域:接口中的任何域都自动是static和final,接口就可以用来创建常量。Java中标识具有常量初始值的static final时,都会使用大写字母来表示。接口中的域自动是public。域是static,在第一次加载类的时候就初始化了。
interface A5 { Random RANDOM = new Random(47); int RANDOM_INT = RANDOM.nextInt(10); long RANDOM_LONG = RANDOM.nextLong() * 10; float RANDOM_FLOAT = RANDOM.nextFloat() * 10; double RANDOM_DOUBLE = RANDOM.nextDouble() * 10; } public class Test18 { public static void main(String[] args) { System.out.println(A5.RANDOM_INT); System.out.println(A5.RANDOM_LONG); System.out.println(A5.RANDOM_FLOAT); System.out.println(A5.RANDOM_DOUBLE); } }
3.嵌套接口:接口可以嵌套在类或者其他接口中;嵌套接口在接口中声明,必须是public修饰符,在类中声明,可以是任何访问修饰符;嵌套接口被隐式声明为static静态。
public interface Test19 { void a(); interface A{ void b(); } } class B implements Test19.A{ @Override public void b() { System.out.println("b()"); } public static void main(String[] args) { Test19.A t = new B(); t.b(); } }