美文网首页
JJJJJava接口

JJJJJava接口

作者: 南在南方i | 来源:发表于2019-08-13 19:56 被阅读0次

接口 interface

Java接口是一系列方法的声明,是一些方法特征的集合
一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为

接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法

特点

就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的(即只有方法标识符,而没有方法体)

  • 接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图
  • 一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力
  • 如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类

为什么使用接口

  • 接口被用来描述一种抽象
  • 接口也被用来实现解耦
  • 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的

接口的用法实现

  • 接口的定义 interface
    interface Computers
  • 接口的实现 implements
    class Add implements Computers{}

实例

/**
 * 利用接口做参数,写个计算器,能完成加减乘除运算。
 * (1)定义一个接口Compute含有一个方法int computer(int n, int m)。
 * (2)设计四个类分别实现此接口,完成加减乘除运算。
 * (3)设计一个类UseCompute,类中含有方法:public void useCom(Compute com, int one, int two),
 *      此方法能够用传递过来的对象调用computer方法完成运算,并输出运算的结果。
 * (4)设计一个主类Test,调用UseCompute中的方法useCom来完成加减乘除运算。
 *
 */
public class Test2 {
    public static void main(String[] args){
        UseComper useComper = new UseComper();
        useComper.useCom(new Add(),12,6);
        useComper.useCom(new Sub(),12,6);
        useComper.useCom(new Mul(),12,6);
        useComper.useCom(new Div(),12,6);
    }
}

interface Computers{
    int computers(int n,int m);
}

class Add implements Computers{
    @Override
    public int computers(int n, int m) {
        System.out.println("Add:" + (n + m));
        return 0;
    }
}

class Sub implements Computers{
    @Override
    public int computers(int n, int m) {
        System.out.println("Sub:"+(n-m));
        return 0;
    }
}

class Mul implements Computers{
    @Override
    public int computers(int n, int m) {
        System.out.println("Mul:"+(n*m));
        return 0;
    }
}

class Div implements Computers{
    @Override
    public int computers(int n, int m) {
        System.out.println("Div:"+(n/m));
        return 0;
    }
}

class UseComper{
    public void useCom(Computers com, int number1, int number2){
        int result = com.computers(number1,number2);
        System.out.println(result);
    }
}

重点

  • 我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法
  • 一个类可以实现不止一个接口
  • 一个接口可以继承于另一个接口,或者另一些接口,接口也可以继承,并且可以多继承
  • 一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法
  • 接口中所有的方法都是抽象的和public的,所有的属性都是public,static,final的

接口的通俗理解(借鉴)

前面我们讲多态的时候用“空调”——“遥控器”的方式去理解多态,实际上在上面的的几个重点中的第一条讲的也是多态的实现,比如,我们可以把“节能”作为一种标准,或者说节能就是一个“接口”,这个接口中有一个方法,叫做变频方法,任何空调,如果要称得上叫做节能空调的话,那么必须实现“节能”这个接口,实现“节能”这个接口,也就必须实现“节能”接口中规定实现的“变频”方法,这样才算是真正的实现了“节能”这个接口,实现了“节能”这个功能。
当某个空调实现了“节能”接口后,这个空调就具备了节能的功能,那么我们也可以不用空调类的引用指向空调对象,我们可以直接使用一个“节能”接口类型引用的“遥控器”去指向“空调”,虽然这个“遥控器”上面只有一个按键,只有一个“变频”的方法,但是“遥控器”所指向的空调是实现了“节能”这个接口的,是有“变频”方法的实现的,我们用这个只有一个“变频”方法的遥控器去命令空调调用“变频”方法,也是行得通的


PS.

渐渐摆脱最开始的迷茫,寻找到适合自己的学习方式,将一个个小的知识点进行拆分后实际运用并在熟悉后相融合

相关文章

  • JJJJJava接口

    接口 interface Java接口是一系列方法的声明,是一些方法特征的集合一个接口只有方法的特征没有方法的实现...

  • JJJJJava线程

    进程 :正在运行的一个程序 系统会为这个进程分配独立的内存资源 线程 :集体执行任务的最小单位 一个进程最少拥有一...

  • JJJJJava集合

    集合与数组的区别 Collection集合的方法 常用集合的分类 Collection 接口的接口 对象的集合(单...

  • JJJJJava异常处理

    异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更...

  • JJJJJava-Map

    Java中的map是一个很重要的集合,他是一个接口,下面继承它实现了多个实现类,这些类各有千秋,各自有个各自的优点...

  • JJJJJava-ArrayList

    ArrayList类是一个特殊的数组。通过添加和删除元素,就可以动态改变数组的长度 泛型 泛型的本质是参数化类型,...

  • JJJJJava抽象类

    抽象类 abstract 必须使用关键字abstract修饰抽象类往往用来表征对问题领域进行分析、设计中得出的抽象...

  • JJJJJava-socket通信

    网络编程主要问题 如何准确的定位网络上一台或多台主机 找到主机后如何可靠高效的进行数据传输在TCP/IP协议中IP...

  • JJJJJava文件的创建与使用

    文件 File Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的...

  • JJJJJava-String不同用法

    了解String类重要的一些方法的使用 String 在 Java 中字符串属于对象,Java 提供了 Strin...

网友评论

      本文标题:JJJJJava接口

      本文链接:https://www.haomeiwen.com/subject/tjtijctx.html