谈谈接口

 

接口

一、此接口非彼接口

   接口有两种定义:一种是我们常说的API(application program interface)应用程序接口,这类接口是有应用服务提供商或第三方软件厂商提供。如Java就提供了不少非常强大的API,各种开放应用平台也纷纷提供自己的API接口供程序员使用。第二种就是我们接下来重点要说的Java语言规范中提供的一种特性(Interface)

 

二、什么是接口(Interface

 

   通俗的讲接口就是一种规范,生活中的一个例子就是我们的每个人都在用的插线板,插线板定义了有两孔的插孔,三孔插孔、或者其他特殊的插孔,各种电器只要按照插线板的规范去制作就肯定可以接上电源。而插线板也根本不需要知道具体知道是什么东西接在我这个插孔中。

 

   Java语言规范中对接口的定义:一个接口就是一些方法特征的集合,所谓的方法特征就是指该方法只有描述而没有具体实现怎么做,好比一个乘法计算的方法只是申明一下,但并不去解决怎么把这个乘法算法的过程和结果写出来。接口就是一种抽象化的表现,但他比抽象类更抽象。(了解抽象类可以看以后写的博客或者查阅其它资料)。我们可以把电影中角色和演员分别比作接口和具体的实现类。

 

三、接口定义:

 

public interface Expression{
		public static final int num1 =1;
		public static final int num2 =2;
		boolean getResult();
}
   

四、接口的一些特性:

   1、接口中的方法的声明默认是public abstract修饰的。

   2、接口中可以包含有public static final 修饰的常量。

   3、一个类可以实现多个接口。

 

五、接口的用途:

   接口在Java语言中有着举足轻重的地位,几乎所有框架的设计都离不开接口,那它究竟用什么做用呢?

   其实接口是对Java多态特性一种很好的实现。我们来设想有这样一个情景:老师一天给学生分配一个任务就是为一个软件实现一个乘法的功能,于是该同学很快就开始写好了如下一个类:

 

public class Client{
    public static void cacl(int num1,int num2){
        System.out.println(num1*num2);
    }
}
   

如果系统不再需升级,此方法无疑是最好的一种方式,但是我们总是会不安于现状,突然几天后老师根据客户的需要又要求我们实现一个除法的功能,我们只好勉为其难的添加了一个新类,然后修改了下Client,变成了如下:

 

public class Client{
       public static void cacl(int num1,int num2,String opt){
        if("*".equals(opt)){
            System.out.println(num1*num2);
        }else if("/".equals(opt)){
            Sysetm.out.println(num1/num2);
        }
    }
}
 

 

设想一下,如果以后老师还有更多的需求,我们就的写上长长的一段if else 语句来判断了,这可不是一个很好的设计。于是乎接口派上用场了。看看下面的代码:

 

public interface Expression{
    int result(int num1,int num2);
}
 
public class multiExpression implements Expression{
   
    public int result(int num1,int num2){
        return num1*num2;
    }
   
}
 
public class Division implements Expression{
 
    public int result(int num1,int num2){
        return num1/num2;
    }
}
 
public class Client{
    public static void cacl(Expression exp,int num1,int num2){
        System.out.println(exp.result(num1,num2));
    }
}
 

 

我们发现Client类中只有一行代码了,非常的精简,以后在有其他的计算需求,我只需写一个新的类就行。根本的不用去修改Client类了。

   接口同时使用在很多种设计模式上。(最后写完这文章,发现一点都不深入,暂且适用于入门读者吧)。

你可能感兴趣的:(接口)