1.对接口的感性认识
原帖:JAVA基础——接口(全网最详细教程)http://t.csdn.cn/Blhh3
USB可以看作一种接口,只要实现了USB标准的设备,就默认它拥有USB功能。
interface USB {
void read();
void write();
}
现在定义U盘类,继承USB接口
class UDisk implements USB {
//继承USB接口,就必须实现USB的所有功能
@Override
public void read() {
System.out.println("reading data...");
}
@Override
public void write() {
System.out.println("writing data...");
}
}
现在写一个测试类,调用一下试试看
public class TestUDisk {
public static void main(String[] args) {
UDisk uDisk = new UDisk();
uDisk.read();
uDisk.write();
}
}
测试结果:
reading data...
writing data...
注意这里new语句也可以写成:USB uDisk = new UDisk();
原理是多态,放在文末解释
2.接口特性
1.一个类可以实现多个接口;
2.接口之间可以继承,并且可以多继承;
3.接口中的属性都是public static final;
4.接口中的方法都是abstract public;
3.(三层架构下)接口的使用
1.service包下
package USB.service;
public interface UsbService {
void read();
void write();
}
2.service包下的impl包下
package USB.service.impl;
import USB.service.UsbService;
public class UDiskImpl implements UsbService {
public void read() {
System.out.println("reading");
}
public void write() {
System.out.println("writing");
}
}
3.controller包下
package USB.controller;
import USB.service.UsbService;
import USB.service.impl.UDiskImpl;
public class UDiskController {
public static void main(String[] args) {
UsbService uDisk = new UDiskImpl();
uDisk.read();
uDisk.write();
}
}
4.拓展——JAVA多态
我们不能直接实例化一个接口。比如,已知接口为USB,实现类为UDisk。
1.显然能实例化UDisk:
UDisk uDisk = new UDisk();
2.不能直接实例化一个接口,因为接口中的方法都是抽象的,没有方法体,无法产生具体实例
USB usb = new USB();
3.但可以使用接口类型的引用指向一个实现了该接口的对象(UDisk),并且可以调用这个接口中的方法
USB uDisk = new UDisk();
好吧,多态和引用都有点记不太清了,去复习一下吧……