接口
接口的语法
无需定义 即为Pubilc权限
接口的实现
implements来实现接口 类似继承 由于接口中的方法均为抽象方法,因此在实现后需要复写才能够引用。
class Phone implements USB,WIFI{
public void read(){
System.out.println("USB read");
}
public void write(){
System.out.println("USB write");
}
public void open(){
System.out.println("WIFI open");
}
public void close(){
System.out.println("WIFI close");
}
}
此外 接口之间也可以继承(是继承!并非实现。若要实现,则要复写AB中的抽象方法,但是C作为接口只能有抽象方法)
interface C extends A,B{
public void funC();
}
接口的使用和静态工厂方法
//printer类
interface Printer{
public void open();
public void close();
public void print(String s);
}
//CannonPrinter类
class CannonPrinter implements Printer{
private void clean(){
System.out.println("Cannon clean");
}
public void close(){
this.clean();
System.out.println("Cannon close");
}
public void open(){
System.out.println("Cannon open");
}
public void print(String s){
System.out.println("Cannon print-->" +s);
}
}
//HPPrinter类
class HPPrinter implements Printer{
public void open(){
System.out.println("HP open");
}
public void close(){
System.out.println("HP close");
}
public void print(String s){
System.out.println("HP print-->"+s);
}
}
使用静态工厂方法,只需要在工厂类中对打印机的flag位进行添加或删除,就能够另其他类方便选择。
//PrinterFactory类
class PrinterFactory{
public static Printer getPrinter(int flag){
//根据用户选择,生成相应的打印机对象,并且向上转型为Printer类型
Printer printer = null;
int flag = 1;
if (flag == 0){
printer = new HPPrinter();
}
else if (flag == 1){
printer = new CannonPrinter();
}
return printer;
}
}
//Test类
class Test{
public static void main(String args[]){
int flag = 1;
Printer printer = PrinterFactory.getPrinter(flag);
printer.open();
printer.print("test");
printer.close();
}
}