java0010——面向接口的编程

例题 计算机连接各种外设,每个外设都有各自的读写方法
目的实现代码依赖接口,而不是依赖具体的类,方便程序的扩展

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();
	}

}
  1. 用default 来定义接口的默认方法
package Computer;
public interface IMobleDevice{
	default public void write() {
		System.out.println("kaka");
	}
	default public void read() {
		System.out.println("kaka");
	}
}
  1. 添加接口静态方法
  2. 函数式接口
  3. lambda表达式
    public int add(int x, int y) {
    return x + y;
    }
    准换成lambda表达式
    (int x, int y) -> x + y;

猜你喜欢

转载自blog.csdn.net/qq_41448891/article/details/82817934