黑马程序员技术交流社区

标题: 一个类实现多个接口引发的一个问题,来这里做个总结 [打印本页]

作者: jxlovqqvo    时间: 2014-12-19 19:49
标题: 一个类实现多个接口引发的一个问题,来这里做个总结
一个类是可以实现一个或者多个接口的

这里有两个接口给一个类实现

  1. public interface InterfaceA {
  2.         void A();
  3. }
复制代码
  1. public interface InterfaceB {
  2.         void B();
  3. }
复制代码
  1. public class TestInner implements InterfaceA,InterfaceB{

  2.         @Override
  3.         public void A() {
  4.                 // TODO Auto-generated method stub
  5.                
  6.         }

  7.         @Override
  8.         public void B() {
  9.                 // TODO Auto-generated method stub
  10.                
  11.         }

  12.        
  13. }
复制代码



上面是可以编译通过的,但是这里会出现这么一个问题就是,我在InterfaceA接口中定义一个void show()方法,在int InterfaceB()中也定义一个show()方法,但是它们的返回值不同,编译将无法通过,因为编译器无法知道show()方法应该返回哪一个值,这个情况会出现在又两个人同时在不同的接口中定义了相同的方法名但是返回类型不同的情况下,而类必须实现这两个接口中的所有方法,这里就会出现矛盾。
  1. public interface InterfaceA {
  2.         void show();
  3.         void A();
  4. }
复制代码
  1. public interface InterfaceB {
  2.         int show();
  3.         void B();
  4. }
复制代码
public class TestInner implements InterfaceA,InterfaceB{

  
        public ? show(){}如何实现?
        public void A() {}
        public void B() {}
}



上面这个问题我们可以用内部类来解决这个矛盾的问题
  1. public class TestInner implements InterfaceA{
  2.        
  3.         class Inner implements InterfaceB{

  4.                 @Override
  5.                 public void B() {
  6.                         // TODO Auto-generated method stub
  7.                        
  8.                 }

  9.                 @Override
  10.                 public int show() {
  11.                         // TODO Auto-generated method stub
  12.                         return 0;
  13.                 }
  14.                
  15.         }
  16.         @Override
  17.         public void A() {
  18.                 // TODO Auto-generated method stub
  19.                
  20.         }


  21.         @Override
  22.         public void show() {
  23.                 // TODO Auto-generated method stub
  24.                
  25.         }

  26.        
  27. }
复制代码

写一个内部类让它去实现另一个接口这样就可以避免上述的问题了







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2