接口
接口的特性:
- 接口不可以被实例化
- 实现类必须实现接口的所有方法
- 实现类可以实现多个接口
- 接口中的变量都是静态常量
接口有比抽象类更好的特性:
1.可以被多继承
2.设计和实现完全分离
3.更自然的使用多态
4.更容易搭建程序框架
5.更容易更换实现
……
一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法
Java中的接口:
属性全都是全局静态常量
方法都是全局抽象方法
无构造方法
示例:防盗门功能
package cn.jbit.door;
/**
* 门
*/
public abstract class Door {
public abstract void open(); //开
public abstract void close(); //关
}
package cn.jbit.door;
/**
* 锁 接口
*/
public interface Lock {
void lockUp(); //锁
void openLock(); //开锁
}
package cn.jbit.door.impl;
/**
* 防盗门 类
*/
public class TheftproofDoor extends Door implements Lock {
@Override
public void lockUp() {
System.out.println("插进钥匙,向左旋转钥匙三圈,锁上了,拔出钥匙。");
}
@Override
public void openLock() {
System.out.println("插进钥匙,向右旋转钥匙三圈,锁打开了,拔出钥匙。");
}
@Override
public void open() {
System.out.println("用力推,门打开了。");
}
@Override
public void close() {
System.out.println("轻轻拉门,门关上了。");
}
}
package cn.jbit.door.impl;
/**
* 测试类。
*/
public class DoorTest {
public static void main(String[] args) {
//创建具体防盗对象
TheftproofDoor tfd=new TheftproofDoor();
tfd.close(); //关门
tfd.lockUp(); //锁门
tfd.openLock(); //开锁
tfd.open(); //开门
}
}
运行结果:
轻轻拉门,门关上了。
插进钥匙,向左旋转钥匙三圈,锁上了,拔出钥匙。
插进钥匙,向右旋转钥匙三圈,锁打开了,拔出钥匙。
用力推,门打开了。