在Java语言中,一个类可以实现多个接口。当一个类实现多个接口时,这个类必须实现所有接口中声明的方法。
案例1:编写汽车程序时,可以把有关汽车的行为分类放到不同的接口中,汽车类可以选择合适的接口来实现这些行为。在程序中定义汽车运行接口Runner和车身颜色接口BodyColor。在Runner接口定义方法run;在BodyColor接口定定义一个modifyBodyColor方法,用于改变车身颜色。建立Car类实现Runner接口和BodyColor接口。
在PCoreUnit2项目新建automobile包,在automobile包下新建Runner接口。代码如下:
package automobile;
/**
* @ClassName: Runner
* @Description: 抽象类与接口(实现多个接口)案例1
* @author 编程训练营
* @date
*
*/
public interface Runner {
// 定义run方法
public void run();
}Runner接口定义了一个run方法。
在automobile包下新建BodyColor接口。代码如下:
package automobile;
/**
* @ClassName: BodyColor
* @Description: 抽象类与接口(实现多个接口)案例1
* @author 编程训练营
* @date
*
*/
public interface BodyColor {
// 定义modifyBodyColor方法
public void modifyBodyColor(long color);
}BodyColor接口定义了一个modifyBodyColor方法,用于改变车身颜色。
在automobile包下新建Car类,实现Runner接口BodyColor接口。在New Java Class对话框(如下图所示),单击【Add】按钮添加Runner接口BodyColor接口到Interfaces列表区域。也可以在代码中手动添加。
Car类代码如下:
package automobile;
/**
* @ClassName: Car
* @Description: 抽象类与接口(实现多个接口)案例1
* @author 编程训练营
* @date
*
*/
public class Car implements Runner,BodyColor {
/**
* <p>Title: modifyBodyColor</p>
* <p>Description: </p>
* @param color
* @see automobile.BodyColor#modifyBodyColor(long)
*/
@Override
public void modifyBodyColor(long color) {
// TODO Auto-generated method stub
System.out.println("修改车身颜色为:" + color);
}
/**
* <p>Title: run</p>
* <p>Description: </p>
* @see automobile.Runner#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("汽车开始运行");
}
}Car类实现了Runner接口和BodyColor接口。当一个类实现多个接口时,接口名称之间用英文逗号分隔。
在automobile包下新建测试类CarTest类,测试Car类。代码如下:
package automobile;
/**
* @ClassName: CarTest
* @Description: 抽象类与接口(实现多个接口)案例1
* @author 编程训练营
* @date
*
*/
public class CarTest {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 实例化Car对象
Car car = new Car();
// 调用接口方法
car.modifyBodyColor(255);
car.run();
}
}程序执行结果如下图所示:
接口无法被实例化,仅可以被类实现。多个类可以实现同一个接口,一个类也可以实现多个接口。