JAVA 接口 Interface 学习笔记 implements

来源:互联网 发布:网络采购的优点有 编辑:程序博客网 时间:2024/06/05 20:37
接口

接口特性
接口不可以被实例化
实现类必须实现接口的所有方法,否则实现类必须是抽象类
实现类可以实现多个接口,来弥补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 {@Overridepublic void ink() {// TODO Auto-generated method stubSystem.out.println("组装彩色墨盒");}}

package com.jerehedu.print;public class BlackInkBox implements InkBox {@Overridepublic void ink() {// TODO Auto-generated method stubSystem.out.println("组装黑白墨盒");}}
package com.jerehedu.print;public class A4PaperBox implements PaperBox {@Overridepublic void paper() {// TODO Auto-generated method stubSystem.out.println("放置A4纸");}}
package com.jerehedu.print;public class B5PaperBox implements PaperBox {@Overridepublic void paper() {// TODO Auto-generated method stubSystem.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;}@Overridepublic void print(InkBox ink, PaperBox paper) {// TODO Auto-generated method stubsetInk(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;}@Overridepublic void print(InkBox ink, PaperBox paper) {// TODO Auto-generated method stubsetInk(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 0
原创粉丝点击