日期:2014-05-20  浏览次数:20667 次

自定义接口继承什么?
为什么接口定义的引用可调用Object中的方法?
看以下例子:
//file   InFace.java
public   interface   InFace
{
        public   void   inFaceA();
}

//file   Imple.java
public   class   Imple   implements   InFace  
{
        public   void   inFaceA()  
      {
              System.out.println( "InterFace   method! ");
      }
      public   void   impleB()
      {
            System.out.println( "Implement   method! ");
      }
}

//file   TestIn.java
public   class   TestIn  
{
        public   static   void   main(String[]   args)
        {
                InFace   i   =   new   Imple();
                i.inFaceA()   ;
                System.out.println(   i.toString()   );
                //此处i只能显示调用inFaceA,不能调用impleB,这是正常的,但是我
              //不明白的是i也能调用toString(),这应该是Object中的方法,但是
              //接口是不能继承类的,
              //我想问接口是不是也有一个类似Object这样的
              //顶级接口,若不是,为什么i可以调用Object中的方法??
        }
}


------解决方案--------------------
我也不明白 虽然是Imple的实例 可是接口里没有定义toString() 方法啊 为什么可以调用?
------解决方案--------------------
我现在终于明白了你们在严究一个什么样的问题了~!!!

接口是哪来的???

我首先要说的是:“接口”不是“类”,如果非要说接口是类的话那就只能说接口是一个特殊的类~!!!它一出生是不会去和“类”的祖先“Object”拉上关系的~!!!

这个问题涉及到底层的东西,就像Java是OOP语言,可是它又为什么还要让int, long, short, byte, double, float, boolean, char和static这样的非OOP的东西存在呢???OOP追求的是单根结构,单继承,可是为什么还要弄个接口出来,可以让一个类去“继承”多个接口呢???
…………………………………………………….

我想对于初学者最好不要去研究这些问题,要不能你们可能会陷进去而“走火入魔”的,因为你们对知识的积累还不多,还无法让自身现有的知识去接受它,等你们对Java有所了解了之后,再回来研究一下这些问题吧~!!!