接口的继承和类继承完全不一样,接口完全支持多继承,即一个接口可以有多个直接父接口,和类继承相似,子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量。
一个接口继承多个父接口时,多个父接口排在extends关键字之后,多个父接口之间以英文逗号隔开。
————————————————————————————————————————————————————————
示例程序:
interface interfaceA
{
int PROP_A=5;
void testA();
}
interface interfaceB
{
int PROP_B=6;
void testB();
}
interface interfaceC extends interfaceA,interfaceB
{
int PROP_C=7;
void testC();
}
public class InterfaceExtendsTest
{
public static void main(String[] args)
{
System.out.println(interfaceC.PROP_A);
System.out.println(interfaceC.PROP_B);
System.out.println(interfaceC.PROP_C);
}
}
```接口的作用:
(1)定义变量,也可以进行强制类型转换。
(2)调用接口中定义的变量
(3)被其他类实现
——————————————————————————
一个类可以实现一个或多个接口,实现接口使用implement关键字。语法格式如下:
[修饰符] class 类名 extends 父类 implements 接口1,接口2
{
类体部分
}
——————————————————————————————————————————————————
(1)一个类实现一个或多个接口之后,这个类必须完全实现这些接口里所定义的抽象方法(也就是全部重写这些抽象方法)
(2)一个类实现某个接口时,该类将会获得接口中定义的常量(成员变量)、方法等。
————————————————————————————————————————————————————
程序示例:实现一个接口类:
<div class="se-preview-section-delimiter"></div>
这里写代码片
“`
//定义一个Product接口
interface Product
{
int getProduceTime();
}
//让Printer 类实现Output和Product接口
public class Printer implements Output,Product
{
private String[] printData = new String[MAX_CACHE_LINE];
//用以记录当前需要打印的作业数
private int dataNum=0;
public void out()
{
//只要还有作业,就继续打印
while(dataNum>0)
{
System.out.println("打印机打印:"+printData[0]);
//把作业队列整体前移一位,并将剩下的作业数-1
System.arraycopy(printData,1,printData,0,--dataNum);
}
}
public void getData(String msg)
{
if(dataNum >= MAX_CACHE_LINE)
{
System.out.println("输出队列已满,添加失败");
}
else
{
printData[dataNum++] =msg;
}
}
public int getProduceTime()
{
return 45;
}
public static void main(String[] args)
{
//创建一个Printer对象,当成Output来用
Output o = new Printer();
o.getData("林肯公园");
o.getData("后街男孩");
o.out();
o.getData("摇滚乐");
o.getData("新金属");
o.out();
//调用Output中定义的默认方法
o.print("麦克","新田","詹姆斯");
o.test();
//创建一个Printer对象,当成Product使用
Product p =new Printer();
System.out.println(p.getProduceTime());
//所有接口类型的引用变量都可以直接赋值给Object类型的变量
Object obj = p;
}
}
接口和抽象类:
(1)接口和抽象类都不能被实例化,都位于继承树的顶端,用于被其他类实现和继承。
(2)接口和抽象类都可以包含抽象方法,实现接口或者继承抽象类都必须实现这些方法。
(3)接口体现的是一种规范,抽象类体现的是一种模板式设计