实现接口的语法:
<访问符>class 类名 implements 接口名{
}
使用implements可以实现多个接口,接口之间使用逗号间隔
一个类实现接口时,必须实现接口中定义的所有没有方法体的方法,除非将该类定义为抽象类
interface myinterface
{
public void add(int a,int b);
public void volume(int x,int y,int z);
default void before()
{
System.out.println("now calculating!!!!");
}
}
public class myclass implements myinterface{
public void add(int a,int b) //实现接口中的add()方法
{
System.out.println(a+"+"+b+"="+(a+b));
}
public void volume(int x,int y,int z) //实现接口中的volume()方法
{
System.out.println(x+"*"+y+"*"+z+"="+(x*y*z));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
myinterface mi=new myclass(); //声明一个myinterface对象,指向没有class类的对象
mi.before();
mi.add(3, 4);
mi.volume(2, 3, 5);
}
}
执行结果:
now calculating!!!!3+4=7
2*3*5=30
与抽象类一样,接口是一种更加虚拟的类结构,因此不能对接口直接实例化,例:
myinterface someface=new myinterface();//错误
与抽象类的区别:
抽象类可以有已经实现的方法,但接口中不能有已实现的方法(JDK8以后可以有已经实现的方法,但必须用default关键字)
接口中变量默认的public static final型,且必须赋初值,其实现类中不能重新定义,也不能改变其值,即接口中定义的变量其实都是最终形态的常量;抽象类中定义的变量和普通变量一样,默认是缺省的friendly,其实现类可以重新定义,也可以根据需要改变其值。
接口中方法都默认为public(也只能是public),抽象类则是缺省的friendly