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