接口

接口的概念

 接口代表的是一个功能的集合,定义规范,所有的方法都是抽像方法,这是一种思想是一种规则,将这个种规则称为接口。

接口的定义

  • 使用关键字 interface 叫做接口
  • 修饰符 interface 接口名{//增加定义的功能,都是抽像的方法}
    注:接口的源文件仍然是java文件,编译后仍为class文件.
    代码参照:
public interface Jiekou {
    //这里增加功能抽像方法
    public abstract void fun();
}

接口特点

  • 接口中的方法全是抽像方法
  • 接口中使用interface表示
  • 接口,不能new(原因:抽像方法不能运行)
  • 接口的实现,依靠类,类与接口之间的关系,实现关系,使用关键字implements
  • 实现格式: class lei implements Jiekou{//功能方法} 代码如下:
public class TestDeom implements Jiekou{

    @Override
    public void fun() {

    }

    //重写方法
}
  • 将接口中的所有抽象全部重写,那么就是一个类,可以实例化对象
  • 没有将接口中的所有抽象全部重号,或者是重写了一部分,这个类将是一个抽象类,不能实例化对象。
  • 接口可以玩多态 A a = new B A代表接品,B代表的是实现类,实现类不能是抽象类。
  • 接口可以作为方法的参数或者返回值

接口中的成员

  • 接口中有变量,但是不叫做变量,而是叫做常量
  • 接口中所谓的常量都是有默认的修饰的 public static final 数据类型 常量名 = 值
  • 使用成员:接口名.成员

方法:

  • 所有的方法都是抽象方法,接口中的所有抽象方法都有默认修饰 public abstract
  • 抽象方法的定义:修饰符 abstract 返回值类型 方法名(参数列表);
  • 构造方法:接口中没有构造方法。类实现接口,重写所有的抽象,类可以实例化对象,JVM调用类的构造 方法,类中构造的第一行默认隐式super();
  • 类确实调用了super().这个super不来自于接口,来自于类的父类,类如果没有直接继承任何父类,那么自动继承Object类,Object类是所有类的父类,所以super()是调用了Object的空参构造

类与类,类与接口,接口与接口之间的关系

  • 类与类之间,继承关系,使用关键字 extends 类与类只能单继承
  • 接口与接口之间是多继承的关系,如果两个接口之间有重复的方法,不会存在调用冲突,因为根本不会调用父类中的抽象。

接口的优势:
1.解除了类与类之间的单继承局限性
2.接口中因为都是抽象,所以尽量要求实现类必须重写所有抽象方法,解除类与类之间的耦合性。
3.类在继承了一个父类的同时还可以实现多个抽象类

public class TestDeom extends Test implements Jiekou{

    public static void main(String[] args) {

    }
}

4.接口与接口之间是继承的关系,使用关键字extends,接口可以多继承,例如interface A extends B,C A接口继承接口B和接口C。

JAVA接口详细讲解的更多相关文章

  1. java 发送邮件详细讲解

    一.JavaMail概述:        JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供 ...

  2. java 大数详细讲解

    介绍 java中用于操作大叔的类主要有俩种 第一个是BigInteger,代表大整数.第二个是BigDecimal,代表大浮点数.两种类的操作方法类似,所以我们只讲解BigInterger的用法 基本 ...

  3. java8新特性-函数式接口详细讲解及案例

    一.函数式接口 1.1 概念 函数式接口在Java中是指:有且仅有一个抽象方法的接口.函数式接口,即适用于函数式编程场景的接口.而Java中的函数式编程体现就是Lambda,所以函数式接口就是可 以适 ...

  4. 第五节:详细讲解Java中的接口与继承

    前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...

  5. 第十节:详细讲解一下Java多线程,随机文件

    前言 大家好,给大家带来第十节:详细讲解一下Java多线程,随机文件的概述,希望你们喜欢 多线程的概念 线程的生命周期 多线程程序的设计 多线程的概念 多线程的概念:程序是静态的,进程是动态的.多进程 ...

  6. 第九节:详细讲解Java中的泛型,多线程,网络编程

    前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...

  7. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  8. 史上最详细JVM,Java内存区域讲解

    本人免费整理了Java高级资料,一共30G,需要自己领取:传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 运行时数据区域 JVM载执行Jav ...

  9. 第四节:详细讲解Java中的类和面向对象思想

    前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...

随机推荐

  1. swift实现AES解密

    原来的加密解密是用java写的,用在安卓系统上.现在要用在iOS系统上,所以从服务器上下载过来的加密文件要用swift来实现其的解密方法. 具体过程如下: 给NSData增加一个类目,NSData+A ...

  2. Linux下新建oracle用户

    su - oraclesqlplus / as sysdba the procedure of dropping user are as follow: select sid,serial# from ...

  3. poj 1146 ID Codes (字符串处理 生成排列组合 生成当前串的下一个字典序排列 【*模板】 )

    ID Codes Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6229   Accepted: 3737 Descript ...

  4. 【LeetCode】求众数

    给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. class Solution(object): ...

  5. redis持久化【转】

    Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(diff ...

  6. (转)C语言之原码、反码和补码

    原码.反码和补码 1).数据在内存中存储的时候都是以二进制的形式存储的. int num = 10; 原码.反码.补码都是二进制.只不过是二进制的不同的表现形式. 数据是以补码的二进制存储的. 2). ...

  7. java反射中Class对象详解和类名.class, class.forName(), getClass()区别

    1.获得类型类 可以看到,对象a是A的一个实例,A是某一个类,在if语句中使用a.getClass()返回的结果正是类A的类型类,在Java中表示一个特定类型的类型类可以用“类型.class”的方式获 ...

  8. 1135 Is It A Red-Black Tree(30 分)

    There is a kind of balanced binary search tree named red-black tree in the data structure. It has th ...

  9. 规划ASM DISK GROUP、查看asm 磁盘当前状态、mount or dismount 磁盘组、检查磁盘组 metadata 的内部一致性

    规划ASM DISK GROUP: 1. 每个磁盘组里的磁盘应该大小.性能.新旧等一致,不能有太大差距 2. 对database files 和 fast recovery area 分别创建不同的d ...

  10. 百度地图API的第一次接触——自定义控件

    1.定义一个控件类,即function function ZoomControl(){ // 设置默认停靠位置和偏移量 this.defaultAnchor = BMAP_ANCHOR_TOP_LEF ...