恶补基础-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 });        

 

posted @ 2022-01-22 15:43  一笼灌汤包  阅读(94)  评论(0)    收藏  举报