例题 计算机连接各种外设,每个外设都有各自的读写方法
目的实现代码依赖接口,而不是依赖具体的类,方便程序的扩展
package Computer;
public interface IMobleDevice{
public void write();
public void read();
}
=====================================================
package Computer;
public class Computer {
IMobleDevice device;
public Computer() {
super();
}
public Computer(IMobleDevice device) {
super();
this.device = device;
}
public IMobleDevice getDevice() {
return device;
}
public void writeData() {
device.write();
}
public void readDate() {
device.read();
}
public void setDevice(IMobleDevice device) {
this.device = device;
}
}
=====================================================
package Computer;
public class Phone implements IMobleDevice {
public void write() {
System.out.println("把笔记本数据写入手机");
}
public void read() {
System.out.println("从手机读取数据到笔记本");
}
}
=====================================================
package Computer;
public class UDisk implements IMobleDevice {
public void write() {
System.out.println("写入U盘");
}
public void read() {
System.out.println("读取U盘");
}
}
=====================================================
package Computer;
public class MobileHarddisk implements IMobleDevice {
public void write() {
System.out.println("把数据写入移动硬盘");
}
public void read() {
System.out.println("从移动硬盘读取数据");
}
}
=====================================================
package Computer;
public class RunningDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Computer computer =new Computer();
UDisk disk=new UDisk();
computer.setDevice(disk);//添加一个具体的多态接口
computer.readDate();
computer.writeData();
Phone phone=new Phone();
computer.setDevice(phone);//修改添加的数据
computer.readDate();
computer.writeData();
MobileHarddisk harddisk=new MobileHarddisk();
computer.setDevice(harddisk);
computer.readDate();
computer.writeData();
}
}
- 用default 来定义接口的默认方法
package Computer;
public interface IMobleDevice{
default public void write() {
System.out.println("kaka");
}
default public void read() {
System.out.println("kaka");
}
}
- 添加接口静态方法
- 函数式接口
- lambda表达式
public int add(int x, int y) {
return x + y;
}
准换成lambda表达式
(int x, int y) -> x + y;