恶补基础-Java接口的实现
因在一些开源项目代码中看到接口与new连用,和用声明成员变量的方法“声明接口”,这与我们认知的理论有些许出入,遂查询一些资料解开这些小误会,特此记录。
Java接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
Java接口的定义/声明
使用 interface 关键字声明一个接口:
public interface Person {
void anymethod(); //该方法默认public abstract,不能在接口中实现,而是在类中实现 ... }
Java接口的实现方式
常规方式
在常规的理论学习中,我们经常看到Java接口通过声明一个类同时用implements关键字实现某个接口
public class Student implements Person { @Override public void anymethod() { System.out.println("student"); } }
匿名内部类
另一种方式就是我这次想重点记录的,当我看到new的时候非常好奇,怀疑作者是不是写错了呢,但是观察一下就会发现这个接口的new和方式和class的Object A = new Object(); 方式不太一样,请看第六行,在函数后面紧跟着一对花括号,这种写法,实际是new了一个实现接口的匿名内部类,开发人员需要在匿名内部类中(花括号内)实现接口。
1 public interface OnMusicProgressListener{ 2 void OnProgress(int progress); 3 } 4 5 6 Manager.setOnProgressListener(new OnMusicProgressListener() { 7 @Override 8 public void OnProgress(int progress) { 9 Log.i("progress" + progress); 10 } 11 });

浙公网安备 33010602011771号