Java中接口、接口的实现和多态的问题?

2025-05-01 10:17:26
推荐回答(1个)
回答1:

没错,这就是多态。接口实现的多态,意味着接口UserService负责定义方法的名字,形参列表和返回值,而不考虑其具体实现,调用方UserBlh也不必了解findUser,saveOrUpdate这两方法由谁来实现,只需知道这userService指针指向的对象已经实现了这两个方法,那么调用方UserBlh只管调用就好。


“调用的是接口UserService中对应的方法,还是调用的是接口的实现UserServiceImpl中对应的方法”看来你可能不太清楚在实现层(语言编译的技术)上如何做的。

具体来说,1.方法实际上就是一段可执行的代码。而接口UserService其实就是定义了一个数据结构(其实就是虚函数表),而不定义方法本身(就是接口没有定义可执行的代码块)

2.接口UserService的子类UserServiceImpl在构造函数里要往这个表填一些东西,这个东西就是子类UserServiceImpl所定义的可执行代码块的入口地址。

3.当调用方UserBlh调用findUser方法,则通过查虚函数表的方式找到那个findUser方法的地址,进行调用。

给张图帮助说明从技术的角度如何实现多态。(假设还有一个类B也实现了接口UserService)