首先明确 Java 为了解决 “致命方块“问题不允许多继承,就是因为若多个父类中出现相同方法,在子类中调用 burn( ) 无法得知调用的是那个父类的 burn( ) 的二义性问题。

image.png

Java 虽然不支持多继承,但是它支持多接口实现的问题,若是在开发中,实现多个接口且接口出现多个重复的抽象方法时,此抽象方法该如何实现 ?

首先明确一点,当类实现其中的一个就可以了,相当于实现了两个 。

如何强行实现出两个接口各自的抽象方法 ?

若有需求需要实现出接口两个不同的抽象方法该如何做 ? 答:** 内部类** ,但无法让两个函数名保持一致

  1. //1.接口A的run
  2. public interface interA { public abstract void run();}
  3. //2.接口B的run
  4. public interface interB { public abstract void run();}
  5. //3.模块实现接口A,B不同的方法
  6. public class Demo implements interA{
  7. //4.通过内部类的方式实现
  8. private class IterBImpl implements interB{
  9. @Override
  10. public void run() {
  11. System.out.println("This run from InterB....");
  12. }
  13. }
  14. @Override
  15. public void run() {
  16. System.out.println("This run from InterA....");
  17. }
  18. //5.通过参数区分调用不同接口的方法
  19. public void run(int i){
  20. IterBImpl it=new IterBImpl();
  21. it.run();
  22. }
  23. }
  24. public class TestClass {
  25. public static void main(String[] args) {
  26. Demo1 demo1=new Demo1() ;
  27. demo1.run(); //调用接口A
  28. demo1.run(1); //调用接口B
  29. }
  30. }