我正在这里https://www.concretepage.com/spring-boot/spring-boot-security-rest-jpa-hibernate-mysql-crud-example的一个教程中创建一个基本的Spring Boot CRUD项目,我试图了解特定代码的内容。
我对Java接口的理解是,您不能调用非静态且未实现的接口的方法签名。但是在ArticleService.java中,创建了对IArticleDAO接口的引用,然后他使用该引用类型从该接口IArticleDAO.java内调用方法
为什么行得通?该接口中没有这些方法的实现,所以我不明白他如何首先调用这些方法,其次才能执行任何操作或返回任何操作。
答案 0 :(得分:0)
接口是定义方法签名的一种方法。然后,可以将实现接口的对象分配给该接口的实例,由于它们已实现,因此您可以绝对调用它们。
因此,如果class A implements B
,则可以将A
的实例分配给B
变量:B b = new A()
在这种情况下,附加的抽象是使用的字段为@AutoWired
。这意味着Spring Framework将找到实现该接口的实例对象并设置该字段。