初学者 接口理解问题
书上有一句话这么说的: 
 当一个类实现一个接口时,它一定要实现接口中定义的所有方法,不然这个类就一定要声明成抽像类。   
 然后给出了这些代码: 
 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 
 	} 
 }