JAVA 介面 Interface 學習筆記 implements
阿新 • • 發佈:2019-02-06
介面
介面特性
介面不可以被例項化
實現類必須實現介面的所有方法,否則實現類必須是抽象類
實現類可以實現多個介面,來彌補Java不能多繼承
介面中的變數都是靜態常量
public interface DemoInterface {
public void demo();
//其他方法
//所有方法都是抽象的
小結:介面的優點
可以被多繼承
設計和實現完全分離
更自然的使用多型
更容易搭建程式框架
更容易更換實現
介面特性
介面不可以被例項化
實現類必須實現介面的所有方法,否則實現類必須是抽象類
實現類可以實現多個介面,來彌補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