关于接口
1、接口的定义
如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
可以使用extends来继承接口的常量和抽象方法,但它与类中的extends不同,它可以继承有多个父接口(多重继承),各父接口间用逗号隔开。
接口中的所有常量必须是public static final,方法必须是public abstract,这是系统默认的,不管你在定义接口时,写不写修饰符都是一样的。
2、接口的特点
定义接口的关键字:interface。实现接口的关键字:implements。
1)不能够被实例化
2)接口中的方法自动设为public abstract类型
3)接口中不能够出现方法体的实现
4)接口中的成员变量全为静态常量,用public static final,不过一般不在接口中定义成员变量
5)实现某个接口的类,必须实现其中所有的方法
6)一个类可以实现多个接口
7)接口可以继承接口,使用extends关键字
8)一个类可以继承一个父类的同时,实现一个或者多个接口,extends关键字必须位于implements关键字之前
3、接口的作用
接口的最主要的作用是达到统一访问。在不同事物(类)中抽象出共同功能点(方法),形成一组公开的功能规则(接口)
来制约某些事物(类)的功能实现。换句话说:接口就是对类的功能(方法)抽象。
接口程序段实例:
interface PCI
{
void start();
void stop();
}
class NetWorkCard implements PCI
{
public void start()
{
System.out.println("send");
}
public void stop()
{
System.out.println("stop");
}
}
class SoundCard implements PCI
{
public void start()
{
System.out.println("du..du");
}
public void stop()
{
System.out.println("sound stop");
}
}
class MainBoard
{
public void usePCICard(PCI p)
{
p.start();
p.stop();
}
}
class Assembler
{
public static void main(String args[])
{
MainBoard mb = new MainBoard();
NetWorkCard nc = new NetWorkCard();
SoundCard sc = new SoundCard();
mb.usePCICard(nc);
mb.usePCICard(sc);
mb.usePCICard(new PCI()
{
public void start()
{
System.out.println("I love you");
}
public void stop()
{
System.out.println("Me too");
}
});
}
}
PS:关于上面的mb.usePCICard(new PCI()。。。这个方法,是采用匿名类来实现接口