接口(interface)用关键词(implements)来实现
接口interface前面的修饰符public和static可以加也可以不加
接口中的内容:
1、静态常量
2、抽象方法
接口中的变量都相当于静态常量(自动加了static和final)
静态常量默认可以不加static和final
抽象方法默认可以不加public和abstract
接口的特征:
1.接口不能被实例化
2.实现类必须实现接口的所有方法,否则实现类必须是抽象类
3.实现类可以实现多个接口,来弥补java不能多继承
4.接口中的变量都是静态常量
接口是一种规范:
体现在接口名称和注释上
面向接口编程
有些接口只有名称
方法的实现方式要通过注释来约定
面向接口编程:
1.接口可以继承多个接口(extends),
接口不能实现接口(implements)
2.类可以实现多个接口(implements),
只能继承一个父类(extends)
继承是纵向的
Object
||
Father
||
Child
接口是横向的
bird plane superman -->fly()
接口和抽象类的区别:
接口习题案例:
1.接口编程题:
(1) 所有的可以拨号的设备都应该有拨号功能 (Dailup)
(2) 所有的播放设备都可以有播放功能(Play)。
(3) 所有的照相设备都有拍照功能(takePhoto)。
(4) 定义一个电话类 Telephone,有拨号功能。
(5) 定义一个Dvd类有播放功能。
(6) 定义一个照相机类 Camera, 有照相功能。
(7) 定义一个手机类 Mobile, 有拨号,拍照,播放功能。
(8) 定义一个人类 Person, 有如下方法:
<1> 使用拨号设备 use (拨号设备)
<2> 使用拍照设备 use(拍照设备)
<3> 使用播放设备 use(播放设备)
<4> 使用拨号播放拍照设备 use(拨号播放拍照设备)
(9) 编写测试类Test
分别创建人,电话,Dvd,照相机,手机对象,让人使用这些对象。
Dailup接口public interface Dailup {
void dailup();
}
Play接口
public interface Play {
void play();
}
takePhoto接口
public interface TakePhoto {
void takephoto();
}
Telephone类
public class Telephone implements Dailup {
@Override
public void dailup() {
// TODO Auto-generated method stub
System.out.println("电话具有拨号功能");
}
}
Dvd类
public class Dvd implements Play {
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("Dvd具有播放功能");
}
}
Camera类
public class Camera implements TakePhoto {
@Override
public void takephoto() {
// TODO Auto-generated method stub
System.out.println("照相机具有照相功能");
}
}
Mobile类
public class Mobile implements Dailup, Play, TakePhoto {
@Override
public void takephoto() {
// TODO Auto-generated method stub
System.out.println("手机有拍照功能");
}
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("手机有播放功能");
}
@Override
public void dailup() {
// TODO Auto-generated method stub
System.out.println("手机有拨号功能");
}
}
Person类
public class Person{
public void use(Dailup dailup){
dailup.dailup();
}
public void use(Dvd dvd){
dvd.play();
}
public void use(TakePhoto takephoto){
takephoto.takephoto();
}
public void use(Mobile mobile){
mobile.dailup();
mobile.play();
mobile.takephoto();
}
}
Test测试类
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person1 person = new Person1();
Telephone phone = new Telephone();
Dvd dvd = new Dvd();
Camera camera = new Camera();
Mobile mobile = new Mobile();
person.use(phone);
person.use(dvd);
person.use(camera);
person.use(mobile);
}
}
执行结果: