[Java基础]接口
Posted lzzycola
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java基础]接口相关的知识,希望对你有一定的参考价值。
一.接口的使用
1.关键字 interface implements
interface TestInterface{ } class TestClass implements TestInterface{ }
interface为接口的声明关键字,而implements则为类实现接口的关键字
2.接口就是用来给实现类增加能力的,给这个类带来一些能力和一些约束,也能增加代码的可读性
二.接口与类的异同
1.在jdk1.8之后接口除了default方法和final方法后所有的方法都是公开抽象的,内部的变量也是公开的静态常量
2.一个类能实现多个接口,一个接口能继承多个接口
3.接口是不能有构造方法和构造块静态块的,它与抽象类一样无法被实例化,但都能声明引用,也能被编译成.class文件
4.实现接口的类如果不是抽象类则需要重写该接口内所有的抽象方法
5.实现接口和类的继承差不多,都是对一个类进行能力的补充和延展,还有一些特殊的接口如:Serializable里面什么也没有,但可以实现它用来实现一种标记的效果,具体实现可以由instanceof来确定
6.接口里的方法在实现类内重写时规则和子父类内发生的重写一样,唯一不同的可能就是接口内的方法访问修饰符都是public的
三.接口的多态
1.因为接口和抽象类一样能被声明引用,所以接口和继承类一样都可以实现多态的使用:
TestInterface test = new TestInterfaceImpl();
这种与父类子类的多态一致,test指向的是实现类的实例,而且这个引用只能调用被重写的接口方法,属性,无法调用实现类内其他特有的属性方法
四.接口匿名内部类的使用
1.常见的如:Thread的接口Runnable:
class Test { public static void main(String[] args) { Thread thread = new Thread(new Runnable() { public void run() { System.out.println("我跑起来了"); } }); thread.start(); } }
这是在Java8之前比较常用的线程简单定义方法
五.接口的回调
1.其实回调与接口的多态和接口匿名内部类的使用都差不多,如下方的Computer类的例子:
interface Usb{ //接口Usb的定义 void server(); } class ComputerA{ //使用匿名内部类 public static void main(String[] args) { Usb usb = new Usb() { public void server() { System.out.println("鼠标的接入..."); } }; } } class ComputerB{ //使用接口的多态 Usb usb; public void use() { //该方法是在外部定义了Usb接口的实现类后使用的方法,给Usb的引用usb指向一个实现类的实例,然后再通过这个use()方法调用这个引用指向的实例内的重写方法 if(usb != null) { usb.server(); } } }
以上是关于[Java基础]接口的主要内容,如果未能解决你的问题,请参考以下文章