JAVA 接口 Interface 学习笔记 implements

接口

接口特性
接口不可以被实例化
实现类必须实现接口的所有方法,否则实现类必须是抽象类
实现类可以实现多个接口,来弥补Java不能多继承
接口中的变量都是静态常量

public interface DemoInterface {    
public void demo();
 //其他方法 
//所有方法都是抽象的

}

如何使用接口

  
小结:接口的优点
可以被多继承
设计和实现完全分离
更自然的使用多态
更容易搭建程序框架
更容易更换实现

补充:常量




接口实例

业务员懂业务    程序员懂程序     工程师懂业务工程师懂程序







简单  继承+接口









生气生气
模拟打印机案例
墨盒:彩色、黑白
纸张类型:A4、B5
墨盒和纸张都不是打印机厂商提供的
打印机的打印功能需要使用兼容市场上的墨盒、纸张

package com.jerehedu.print;

public interface InkBox {
	
	void ink();

}

package com.jerehedu.print;

public interface PaperBox {
	
	void paper();
	
}
package com.jerehedu.print;

public interface PrintBox {
	
	void print(InkBox ink,PaperBox paper);
}

package com.jerehedu.print;

public class ColorInkBox implements InkBox {

	@Override
	public void ink() {
		// TODO Auto-generated method stub
		System.out.println("组装彩色墨盒");
	}

}

package com.jerehedu.print;

public class BlackInkBox implements InkBox {

	@Override
	public void ink() {
		// TODO Auto-generated method stub
		System.out.println("组装黑白墨盒");
	}

}
package com.jerehedu.print;

public class A4PaperBox implements PaperBox {

	@Override
	public void paper() {
		// TODO Auto-generated method stub
		System.out.println("放置A4纸");
	}

}
package com.jerehedu.print;

public class B5PaperBox implements PaperBox {

	@Override
	public void paper() {
		// TODO Auto-generated method stub
		System.out.println("放置B5纸");
	}

}
package com.jerehedu.print;

public class HupuPrintBox implements PrintBox {
	
	private InkBox ink;
	private PaperBox paper;
	
	public InkBox getInk() {
		return ink;
	}

	public void setInk(InkBox ink) {
		this.ink = ink;
	}

	public PaperBox getPaper() {
		return paper;
	}

	public void setPaper(PaperBox paper) {
		this.paper = paper;
	}

	@Override
	public void print(InkBox ink, PaperBox paper) {
		// TODO Auto-generated method stub
		setInk(ink);
		ink.ink();
		setPaper(paper);
		paper.paper();
		System.out.println("惠普打印机开始工作了");
	}

}
package com.jerehedu.print;

public class OtherPrintBox implements PrintBox {
	private InkBox ink;
	private PaperBox paper;
	
	public InkBox getInk() {
		return ink;
	}

	public void setInk(InkBox ink) {
		this.ink = ink;
	}

	public PaperBox getPaper() {
		return paper;
	}

	public void setPaper(PaperBox paper) {
		this.paper = paper;
	}

	@Override
	public void print(InkBox ink, PaperBox paper) {
		// TODO Auto-generated method stub
		setInk(ink);
		this.ink.ink();
		setPaper(paper);
		this.paper.paper();
		System.out.println("其他牌子的打印机开始工作了");
	}

}
package com.jerehedu.print;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//组装一个惠普彩色a4打印机
		ColorInkBox colorbox=new ColorInkBox();
		A4PaperBox a4box=new A4PaperBox();
		HupuPrintBox hupu=new HupuPrintBox();
		hupu.print(colorbox, a4box);
		//组装一个其他牌子的黑白b5打印机
		BlackInkBox blackbox=new BlackInkBox();
		B5PaperBox b5box=new B5PaperBox();
		OtherPrintBox other=new OtherPrintBox();
		other.print(blackbox, b5box);
	}

}



作者:冲天之峰    20160530







  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值