1. 程式人生 > >JAVA 介面 Interface 學習筆記 implements

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