接口

1.接口

接口是一种使用interface进行声明的引用数据类型。

public interface 接口名{
}

  

接口中可以声明属性了方法,但是在接口中所定义的属性都为静态常量(static final),方法都为公共抽象方法(public abstract void 方法名()),由于在接口中默认使用公共抽象方法,也可以写成public void 方法名() 。

public interface MyInterface {
public static final String version = "1.0";
	public int count = 10; // 默认是static final类型
	public void showInfo();
}

  需要注意的是,在接口中不能创建对象,因此也不存在构造方法。接口可以进行多继承,一个接口可以继承多个其他接口。

ublic interface CInterface extends AInterface, BInterface {

}//继承后CInterface接口就具备了A、B接口中定义的抽象方法。

  一个类只能继承一个父类,且同时可实现多个接口(该类为接口的实现类(implements class)),但必须实现接口中的所有抽象方法。先继承后实现。

public class ImplClass3 extends AbsClass implements AInterface,BInterface{
	public void showInfoA() {
		// 实现内容
	}
	public void showInfoB() {
		// 实现内容
	}
	public void showInfoC() {
		// 实现内容
	}
}

  一个抽象父类定义了和接口的抽象方法,实现类实现的是抽象父类的抽象方法。

2.接口实现多态

  接口实现多态: 接口类型 引用 实现类对象

 

  继承实现多态: 父类类型 引用 子类对象

 

  接口定义的方法被实现类实现,通过接口引用实现类,调用接口的方法时,执行实现类实现的方法。

public class Test01 {
	public static void main(String[] args) {
		
		// 同一引用类型
		USBInterface usbInterface = null;
		
		// 实例不同
		usbInterface = new USBFan();
		// 对同一方法的执行结果不同
		usbInterface.connect();

		usbInterface = new USBMouse();
		usbInterface.connect();
		
		usbInterface = new USBDisk();
		usbInterface.connect();
	}
}

 

3.面向接口编程

  所谓面向接口编程,程序设计时,只关心实现类具备什么能力,而不关心实现类如何实现这个能   力。面向接口编程时,面向接口的约定而不考虑接口的具体实现。

  也就是说,面向接口编程时,接口的定义方只关系实现类是否具备接口所定义的能力,而实现类如何被的该能力接口定义方一点都不关心

public class Writer {

	// 预留墨盒接口
	private InkBoxInterface inkBoxInterface;

	// 预留纸张接口
	private PaperInterface paperInterface;

	public InkBoxInterface getInkBoxInterface() {
		return inkBoxInterface;
	}

	public void setInkBoxInterface(InkBoxInterface inkBoxInterface) {
		this.inkBoxInterface = inkBoxInterface;
	}

	public PaperInterface getPaperInterface() {
		return paperInterface;
	}

	public void setPaperInterface(PaperInterface paperInterface) {
		this.paperInterface = paperInterface;
	}

	public Writer(InkBoxInterface inkBoxInterface, PaperInterface paperInterface) {
		super();
		this.inkBoxInterface = inkBoxInterface;
		this.paperInterface = paperInterface;
	}

	public Writer() {
		super();
	}

	public void print(String content) {
		System.out.println("打印机正在使用"+this.inkBoxInterface.getColor()+"颜色打印"+this.paperInterface.getSize()+"打印"+content);
	}
}

 

  

 

posted @ 2019-04-25 23:15  麻烦关下灯  阅读(178)  评论(0编辑  收藏  举报