一、为什么使用接口
1.门有“开”和“关”的功能,锁有“上锁”和“开锁”的功能
2.将门和锁分别定义为抽象类
将门定义为抽象类,锁定义为接口防盗门继承门,实现锁的接口问题:
防盗门可以继承门的同时又继承锁吗?
如何解决这个问题呢?
可以应用接口去解决这个问题
二、定义接口
public interface MyInterface {
public void foo();
//其他方法
}
接口的特性接口不可以被实例化实现类必须实现接口的所有方法实现类可以实现多个接口接口中的变量都是静态常量二、用程序描述USB接口
分析:
USB接口本身没有实现任何功能USB接口规定了数据传输的要求USB接口可以被多种USB设备实现三、编码实现:
1.编写接口:
public interface UsbInterface {
/**
* USB接口提供服务。
*/
void service();
}
2.实现接口:
public class UDisk implements UsbInterface {
public void service() {
System.out.println("连接USB口,开始传输数据。");
}
}
3.使用接口:
public static void main(String[] args){
UsbInterface uDisk = new UDisk();
uDisk.service();
}
四、接口是一种能力:体现在接口的方法上。面向接口的编程,不考虑接口的具体实现 。关心实现类有何能力,而不关心实现细节
五、应用接口实现防盗门功能
分析:
防盗门是一个门防盗门有一个锁:上锁和开锁是一种能力六、编码实现:
1.编写Door门的类:
public abstract class Door {
//开门
public abstract void open();
//关门
public abstract void close();
}
2.编写Lock锁的接口:
public interface Lock {
//上锁
public void lockUp();
//开锁
public void openLock();
}
3.编写实现类:
publicclassTheFtpRoofDoor extends Door implements Lock {
@Override
publicvoidlockUp() {
System.out.println("插入钥匙,向左旋转三圈,拔出钥匙,门锁了上");
}
@Override
publicvoidopenLock() {
System.out.println("插入钥匙,向右旋转三圈,锁打开了,拔出钥匙");
}
@Override
publicvoidopen() {
System.out.println("用力推,门打开了");
}
@Override
publicvoidclose() {
System.out.println("轻轻关门,门关上了");
}
}
4.测试程序:
publicclassTestDoor {
publicstaticvoidmain(String[] args) {
Door door=newTheFtpRoofDoor();
Lock lock=newTheFtpRoofDoor();
//关门
door.close();
//上锁
lock.lockUp();
//开锁
lock.openLock();
//开门
door.open();
}
}