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

初学者 接口理解问题
书上有一句话这么说的:
当一个类实现一个接口时,它一定要实现接口中定义的所有方法,不然这个类就一定要声明成抽像类。

然后给出了这些代码:
public   inferface   myinterface
{
    public   void   add(int   x,int   y)
    public   void   volume(int   x,int   y,int   z)
}

public   class   interfacedemo   implements   myinterface
{
    public   void   add(int   x,int   y)
  {
      System.out.println( "   "+(x+y));  
  }

  public   void   volume(int   x,int   y,int   z)
  {
      System.out.println( "   "+(x*y*z));
 
  }

}

  public   void   static   main(String   args[])
{
    MyInterFace   d=new   InterfaceDemo();
    d.add(10,20)
    d.volume(10,10,10);
}

这些代码   让我郁闷的是   那些方法写在类里不是更直接么。为什么还要定义接口,这样不是浪费么?

------解决方案--------------------
多数动物都会叫,但又各不相同,去到某个地方里,他们都只知道你是动物,不知道你具体是什么运行,只知道你会叫.
动物接口
song()
人类实现动物接口
song()
{
System.out.println( "人叫 ");
}
鸟类实现动物接口

song()
{
System.out.println( "鸟叫 ");
}

去到某个类的一个方法里
void ff(动物接口)
{
动物叫(传人的实例进来就是 "人叫 ",传鸟的实例进来就是 "鸟叫 ")
}
在这个方法只管让 "动物叫 ",具体是哪个动物由实际情况确定


------解决方案--------------------
接口中所有的方法都是public abstract。
在接口中声明方法时,不能使用native、static 、final 、synchronized 、private 、protected等修饰符。
和public类一样,public接口也必须定义在与接口同名的文件中。
接口中可以有数据成员,这些成员默认都是public static final。
举例:
interface Math
{
double PI=3.1415926;
}
class Arithmetic implements Math
{
double roundArea(double radius)
{
return PI*radius*radius;
}
}
class Student
{
public static void main(String[] args)
{
Arithmetic a=new Arithmetic();
System.out.println(a.roundArea(3));
System.out.println(Math.PI); //ok
System.out.println(Arithmetic.PI); //ok
System.out.println(a.PI); //ok
}
}