使用接口引用调用非静态未实现的方法

时间:2019-03-19 15:49:52

标签: java spring spring-boot

我正在这里https://www.concretepage.com/spring-boot/spring-boot-security-rest-jpa-hibernate-mysql-crud-example的一个教程中创建一个基本的Spring Boot CRUD项目,我试图了解特定代码的内容。

我对Java接口的理解是,您不能调用非静态且未实现的接口的方法签名。但是在ArticleService.java中,创建了对IArticleDAO接口的引用,然后他使用该引用类型从该接口IArticleDAO.java内调用方法

为什么行得通?该接口中没有这些方法的实现,所以我不明白他如何首先调用这些方法,其次才能执行任何操作或返回任何操作。

1 个答案:

答案 0 :(得分:0)

接口是定义方法签名的一种方法。然后,可以将实现接口的对象分配给该接口的实例,由于它们已实现,因此您可以绝对调用它们。

因此,如果class A implements B,则可以将A的实例分配给B变量:B b = new A()

在这种情况下,附加的抽象是使用的字段为@AutoWired。这意味着Spring Framework将找到实现该接口的实例对象并设置该字段。