大家好,今天小编关注到一个比较有意思的话题,就是关于java语言多态的问题,于是小编就整理了1个相关介绍j***a语言多态的解答,让我们一起看看吧。
j***a是怎么通过方法区中的方法表来实现多态和接口的?
没错,这就是多态。接口实现的多态,意味着接口UserService负责定义方法的名字,形参列表和返回值,而不考虑其具体实现,调用方UserBlh也不必了解findUser,s***eOrUpdate这两方法由谁来实现,只需知道这userService指针指向的对象已经实现了这两个方法,那么调用方UserBlh只管调用就好。 “调用的是接口UserService中对应的方法,还是调用的是接口的实现UserServiceImpl中对应的方法”看来你可能不太清楚在实现层(语言编译的技术)上如何做的。 具体来说,1.方法实际上就是一段可执行的代码。而接口UserService其实就是定义了一个数据结构(其实就是虚函数表),而不定义方法本身(就是接口没有定义可执行的代码块) 2.接口UserService的子类UserServiceImpl在构造函数里要往这个表填一些东西,这个东西就是子类UserServiceImpl所定义的可执行代码块的入口地址。 3.当调用方UserBlh调用findUser方法,则通过查虚函数表的方式找到那个findUser方法的地址,进行调用。 给张图帮助说明从技术的角度如何实现多态。(***设还有一个类B也实现了接口UserService)
多态其实就是使用继承来实现的一个功能;由于一个类可以被多个子类所继承,那么就可以把这个被多个子类继承的父类看作是拥有多种状态,
接口的实现
1.接口的组成:public+interface+接口名+{接口体};
2.接口实现以及多重实现的格式:
public+class+类名+implements+接口名+,+接口名+{类体};
3.接口中的变量默认都是public,static,final修饰的,方法则默认是public,abstract修饰的,所以接口中的方法都是抽象方法,在实现了一个接口之后,实现该接口的类必须重写接口中的抽象方法。
4.因为接口是没有任何具体实现的,所以是实现多重继承方法之一(另一个可以实现多重继承的方法是内部类)。
到此,以上就是小编对于j***a语言多态的问题就介绍到这了,希望介绍关于j***a语言多态的1点解答对大家有用。