您的位置:首页 > 编程语言 > Java开发

Java 学习第7天(1) 接口的应用

2015-05-10 10:15 375 查看
1 为什么使用接口

《Java编程思想》:

接口是特殊的抽象类。

interface 不仅仅是一个极度抽象的类,因为它允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似我重继承的特性。

完全解耦。只要一个方法,操作的是类而非接口,那么你就只能使用这个类及其子类。如果你想要将这个方法应用于不在此继承结构中的某个类,那么你就触霉头了。接口可以在很大程度上放宽这种限制,因此,它使我们可以编写可复用性更好的代码。

通过接口可以实现多重继承。

《Java核心技术 卷I:基础知识》

接口与抽象类:使用抽象类表示通用属性存在这样一个问题:每个类只能扩展于一个类。

Java的设计者们选择了不支持多继承,其主要原因是多继承会让语言本身变得非常复杂,效率也会降低。

为了避免这类问题的出现,Java语言利用接口机制来实现多继承的大部分功能。

2 工厂方法模式



举例:

interface Printer{
public void open();
public void print();
public void close();

}
class HpPrinter implements Printer{
public void open(){
System.out.println("HpPrinter open");
}
public void print(){
System.out.println("HpPrinter print");
}
public void close(){
System.out.println("HpPrinter close");
}
}
class CanonPrinter implements Printer{
public void open(){
System.out.println("CanonPrinter open");
}
public void print(){
System.out.println("CanonPrinter print");
}
public void close(){
this.clean();
System.out.println("CanonPrinter close");
}
private void clean(){
System.out.println("CanonPrinter clean");
}
}
class EpsonPrinter implements Printer{
public void open(){
System.out.println("EpsonPrinter open");
}
public void print(){
System.out.println("EpsonPrinter print");
}
public void close(){
System.out.println("EpsonPrinter close");
}
}
class PrinterFactory{
//根据用户选择,生成相应的打印机对象
//并且向上转型为Printer类型
//返回值Printer getPrint函数
public static Printer getPrint(int flag){
Printer printer = null;
if(flag == 0){
printer = new HpPrinter();
}else if(flag == 1){
printer = new CanonPrinter();
}else if(flag == 2){
printer = new EpsonPrinter();
}
return printer;
}
}
class Main{
public static void main(String[] args){
int flag = 2;
Printer printer = PrinterFactory.getPrint(flag);
printer.open();
printer.print();
printer.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: