java 当一个接口被多个类继承时 如何知道是调用的哪个类的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 当一个接口被多个类继承时 如何知道是调用的哪个类的实现相关的知识,希望对你有一定的参考价值。

这个问题太笼统了,一个接口被多个类实现时,每个类的功能实现的地方肯定也不一样,想知道当前是调用的哪个实现类,需要看当前用的是什么功能和阶段名称,根据功能和阶段名称找实现此功能方法的实现类即可。
还有一个最笨的方法,在所有实现此接口方法的实现类的方法上打上断点,进行debugger测试,当实现功能时进入的是哪个debugger断点,那就是调用的那个实现类。
参考技术A 超类和接口具有相同的方法,调用的是接口的。因为接口的方法必须在该类中实现,实现后相当于子类覆盖了超类的方法

多个接口具有相同的方法,调用的是任意一个接口的方法,因为他们本来就一样,不管多少个接口,方法都必须实现,既然方法一样,实现时代码会是同一段
参考技术B 用 intanceof 关键词比较

java中接口可以实现多个接口吗

接口是常量值和方法定义的集合。接口是一种特殊的抽象类。

java类是单继承的。classB Extends classA

java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……

不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。

注意:

(1)一个类如果实现了一个借口,则要实现该接口的所有方法。

(2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。

(1)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。

总结

首先说明java多实现的背景:

c++中的指针和多重继承易产生安全问题。子类有多个父类,父类又有其父类,继承树很复杂,方法重写和构造易混乱,代码也不易维护。

java吸取教训,采用了单继承多实现的方式。

显然这种bug,接口编写者不会发现,只有程序员在写实现类时,ide首先就会报错。

解决方法:实现类里写个内部类,分别实现两个接口。

补:java规范里,方法名+参数(不含返回值类型)唯一确定一个方法。

参考技术A 一个类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
    官方服务
      官方网站官方网站

以上是关于java 当一个接口被多个类继承时 如何知道是调用的哪个类的实现的主要内容,如果未能解决你的问题,请参考以下文章

java线程方面的知识

java中的接口,实现类之间的关系

一个Interface 继承多个Interface 的总结

Java支持多继承么?

----特质

线程实现Runnable接口比继承Thread的优势