接口的应用
interface Printer{
void open();
void close();
void print(String s);
}
class HPPrinter implements Printer{
public void open(){
System.out.println("Open--HP");
}
public void close(){ //这里实现接口的方法时,一定要是public型才行,因为接口中都是public型
System.out.println("Close--HP");
}
public void print(String s){
System.out.println("PrintHP-->"+s);
}
}
/*
1.每一个实现接口的类都需要实现接口的所有方法,而不能实现其部分方法
*/
class CanonPrinter implements Printer{
public void open(){
System.out.println("Open--Canon");
}
public void close(){ //这里实现接口的方法时,一定要是public型才行,因为接口中都是public型
System.out.println("Close--Canon");
}
public void print(String s){
System.out.println("PrintCanon-->"+s);
}
private void clear(){
System.out.println("clear --> own");
}
}
class PrinterFactory{
public static Printer getPrinter(int flag){ //为什么一定要用static-->因为静态方法可以不用创建对象就可调用
Printer printer = null;
if(flag == 0){
printer = new HPPrinter(); //向上转型
}
else{
printer = new CanonPrinter();
}
return printer;
}
}
class Test{
public static void main(String args []){
//根据用户的选择选择打印机类型,并向上转型为打印机类型
int flag = 1;
Printer printer = PrinterFactory.getPrinter(flag); //这里为什么不用加 new? 因为是静态方法
//因为PrinterFactory是静态类,可以不声明对象就调用
printer.open();
printer.close();
printer.print("Test");
}
}