Java超详细讲解接口的实现与用法

目录
  • 1.接口的定义
  • 2.接口的实现
  • 3.接口的引用
  • 4.接口的继承
  • 5.利用接口实现多重继承

1.接口的定义

接口是一种特殊的抽象类,是Java提供的一个重要的功能,与抽象类不同的是:

  • 接口的所有数据成员都是静态的且必须初始化。
  • 接口中的所有方法必须都是抽象方法,不能有一般的方法。

[public] interface 接口名称 [extends  父接口名列表]
{
    [public] [static] [final]数据类型 成员变量名 = 常量;
    ...
    [public][abstract]返回值数据类型 方法名(参数表);
    ...
}

其中,成员方法必须都是抽象方法。接口定义的[ ]中的修饰符可以省略,省略后默认为以上访问权限。

---------------分割线---------------

2.接口的实现

接口和抽象类一样不能用来实例化对象,必须借用接口的特征创建出来一个新的类,然后用新的类来实例化对象。

  • 利用接口创建新的类的过程称为接口的实现。
  • 实现一个接口的过程使用implements关键字。

class 类名称 implements 接口名表
{
    ...
}

  • 如果实现某接口的类不是抽象类,那么它必须实现指定接口的所有抽象方法。
  • 类在实现接口的方法时必须显式的使用pulic访问权限修饰符,子类覆盖父类方法时不可以缩小父类方法的访问权限范围。

---------------分割线---------------

3.接口的引用

接口可以作为一种引用类型来使用,任何实现该接口的类实例化的对象都可以储存在该接口类型的变量中,通过这些变量访问类所实现的接口中的方法。

---------------分割线---------------

4.接口的继承

当然啦!接口和类一样也可以使用继承派生出来新的类。也可以通过extends关键字来实现,被继承的接口称为父接口,派生出来的新接口称为子接口。但是不同的是,一个子接口可以同时有多个直接父接口。它们之间用逗号分隔。子接口继承父接口的所有变量和方法。

如果子接口中定义了和父接口同名的常量,父接口中的常量被隐藏,如果时方法,则被覆盖。

interface A{
    abstract void print1();
}
interface B extends A{
    abstract void print2();
}
class C implements B{
    public void print1(){
        System.out.print("Hello");
    }
    public void print2(){
        System.out.print("World");
    }
}
public class Print{
    public static void main(String[] args){
        B b=new C();
        b.print1();
        b.print2();
    }
}

其中B接口是A接口的直接父接口,C类实现B接口,覆盖B接口中的所有的抽象方法。Print类是主类,定义接口的引用指向实现它的类的实例化对象,访问类所实现的接口中的方法。(接口作为引用数据类型使用)

---------------分割线---------------

5.利用接口实现多重继承

由于Java不支持多重继承,所以可以利用接口实现类似于多重继承的机制,同时规避了C++多重继承中存在很多歧义的问题,使代码更加简洁,逻辑清晰,安全可靠。一个类只能有一个直接父类,但是它可以同时实现多个接口,可以把接口理解为类,即实现了Java类的多重继承。

//filename:Cylinder.java
interface Face1{
    final double PI=3.14;
    abstract double area();
}
interface Face2{
    abstract void volume();
}
public class Cylinder implements Face1,Face2{
    private double radius;
    private int height;
    public Cylinder(double r,int h){
        radius=r;
        height=h;
    }
    public double area(){
        return PI*radius*radius;
    }
    public void volume(){
        System.out.print("圆柱体的体积="+this.area()*height);
    }
    public static void main(String[] args){
        Cylinder volu=new Cylinder(5.0,2);
        volu.volume();
    }
}
//圆柱体的体积=157.0

到此这篇关于Java超详细讲解接口的实现与用法的文章就介绍到这了,更多相关Java接口内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java超详细分析抽象类和接口的使用

    目录 什么是抽象类 抽象类语法 总结抽象类: 接口 怎么定义接口 接口间的继承 几个重要的接口 接口comparable comparator接口-比较器 cloneable接口深入理解深拷贝与浅拷贝 怎么使用cloneable接口 浅拷贝: 深拷贝 什么是抽象类 什么是抽象类呢?抽象类顾名思义就是很抽象,就是当我们没有足够的信息去描述这个类的时候我们就可以先不用描述,这样的类就是抽象类. 用代码举个例子: class Shape { public void draw() { System.ou

  • Java 超详细讲解抽象类与接口的使用

    目录 一.抽象类 1.抽象类的语法 2.抽象类的特性 3.抽象类的作用 二.接口 1.接口的概念 2.接口使用 3.接口特性 4.实现多个接口 5.接口间的继承 6.常用的接口 (1)Comparable接口 (2)Cloneable接口 三.Object类 一.抽象类 在Java中,如果一个类被abstract修饰称为抽象类,抽象类中被abstract修饰的方法称为抽象方法,抽象方法不用给出方法体. 1.抽象类的语法 //抽象类:被abstract修饰的类 public abstract cl

  • Java8接口之默认方法与静态方法详解

    目录 前言 为什么选择默认方法? Java 8示例:接口中的默认方法 Java 8示例:接口中的静态方法 Java 8 - 抽象类与接口 总结 前言 在Java8之前,java中的接口只能有抽象方法.默认情况下,接口的所有方法都是公共和抽象的.Java8允许接口具有默认和静态方法.我们在接口中使用默认方法的原因是,允许开发人员向接口添加新方法,而不会影响实现这些接口的类. 为什么选择默认方法? 例如,如果A.B.C和D等几个类实现了一个接口XYZInterface,那么如果我们向XYZInter

  • Java由浅入深通关抽象类与接口下

    目录 1.对象的比较 1.1 Comparable<T> 1.2 Comparator<T> 2.克隆对象 2.1 Cloneable 2.2 深拷贝和浅拷贝 3.Object类 3.1 equals 3.2 toString 本篇介绍在对对象进行比较和克隆操作的时候会使用的接口,然后介绍一个类:Object 在Java中Object类默认是所有类的父类,里面有一些常用的方法会介绍 1.对象的比较 两个对象要进行比较之前,我们首先需要确定依据什么来进行比较,对象中的成员变量那么多,

  • Java由浅入深通关抽象类与接口上

    目录 1.抽象类 1.1抽象类概念 1.2抽象方法 1.3抽象类的细节 2.接口 2.1接口概念 2.2接口的细节 1.抽象类 1.1抽象类概念 我们都知道对象是通过类来进行描述的,但是不是说所有的类都是用来描述对象的 一个类的类中没有足够的信息来描述一个具体的对象,这便是抽象类 抽象类的关键字:abstract 1.2抽象方法 首先还是看看之前写过的类: class Plant { String name; String source; String genus; public void tr

  • 一文搞懂Java中的抽象类和接口到底是什么

    目录 什么是抽象类 抽象类在实现多态中的意义 接口是什么 通过接口实现多态

  • java基础之接口组成更新的实现

    目录 1.1 接口组成更新概述 1.2 接口中默认方法(JDK8) 1.3 接口中静态方法(JDK8) 1.4 接口中私有方法(JDK9) 1.1 接口组成更新概述 接口的组成 常量:public static final 抽象方法:public abstract 默认方法(Java 8) 静态方法(Java 8) 私有方法(Java 9) 1.2 接口中默认方法(JDK8) 我们都知道,一个类实现一个接口,就要重写这个接口中的所有抽象方法.但现在接口中新增了一个方法,实现这个接口的类不想重写这

  • Java详细讲解不同版本的接口语法和抽象类与接口的区别

    目录 什么是接口? 接口的语法: (JDK7.0) 接口的语法: (JDK8.0) 接口的语法: (JDK9.0)—(私有方法) 接口的分类 常量接口: 空接口: 函数式接口: 什么是接口? 说到接口,USB大家肯定不陌生~接口是一种标准.规范.注意:接口一旦制定好,使用者和实现者都必须遵循的标准. 接口的语法: (JDK7.0) (1) 关键字:interface (2) 语法:  interface 接口名{} (3) 接口编译之后会生成对应的 .class文件 (4) 接口不能创建对象,但

  • Java超详细讲解接口的实现与用法

    目录 1.接口的定义 2.接口的实现 3.接口的引用 4.接口的继承 5.利用接口实现多重继承 1.接口的定义 接口是一种特殊的抽象类,是Java提供的一个重要的功能,与抽象类不同的是: 接口的所有数据成员都是静态的且必须初始化. 接口中的所有方法必须都是抽象方法,不能有一般的方法. [public] interface 接口名称 [extends  父接口名列表]{    [public] [static] [final]数据类型 成员变量名 = 常量;    ...    [public][

  • Java超详细讲解抽象类的原理与用法

    目录 1. 抽象类是什么 2 抽象类的语法 3 抽象类都有什么特性 4 抽象类是干什么的 1. 抽象类是什么 ️给大家上一篇小作文,看完这个,你就理解了什么叫做抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. ️思考一下抽象类和类在功能上什么区别 因为抽象类是没有足够的信息去描绘一个具体的对象的,所以抽象类也就不能实例化对象 除此之外,抽象类的其它功能都是存在的,成员

  • Java 超详细讲解设计模式之中的抽象工厂模式

    目录 抽象工厂模式 1.什么是抽象工厂 2.抽象工厂模式的优缺点 3.抽象工厂模式的结构与实现 4.抽象工厂方法模式代码实现 5.抽象工厂模式的应用场景 6.抽象工厂模式的扩展 抽象工厂模式 前面文章介绍的工厂方法模式中考虑的是一类产品的生产,比如案例中的百事可乐工厂只能生产百事可乐,可口可乐工厂只能生产可口可乐,也就是说:工厂方法模式只考虑生产同等级的产品. 1.什么是抽象工厂 在现实生活中许多工厂是综合型的工厂,能生产多种类)的产品,就拿案例里面的可乐来说,在节日的时候可能会有圣诞版的可乐,

  • Java 超详细讲解设计模式之中的建造者模式

    目录 1.什么是建造者模式? 2.建造者模式的定义 3.建造者模式的优缺点 4.建造者模式的结构 5.建造者模式代码演示 6.建造者模式的应用场景 7.建造者模式和工厂模式的区别 1.什么是建造者模式? 我们知道在软件开发过程中有时需要创建一个很复杂的对象,通常由多个子部件按一定的步骤组合而成. 例如,比如我们在自己在组装一台计算机的时候,需要有 CPU.主板.内存.硬盘.显卡.机箱.显示器.键盘.鼠标等部件组装而成的.比如学校需要采购100台计算机,学校不可能自己把零件买过来自己组装,肯定是告

  • Java超详细讲解设计模式之一的工厂模式

    目录 工厂模式 1.简单工厂 1.1结构 1.2实现 1.3优缺点 1.4扩展 2.工厂方法 2.1结构 2.2实现 2.3优缺点 3.抽象工厂 3.1结构 3.2实现 3.3优缺点 4.模式扩展 4.1实现 工厂模式 在Java应用程序中对象无处不在,这些对象都需要进行创建,如果创建的时候直接new对象,那么如果我们要更换对象,所有new对象的地方都需要进行更改.违背了软件设计原则中的开闭原则.如果我们使用工厂生产对象,只需要在工厂中关注对象的改变即可,达到了与对象解耦的目的,工厂模式最大的特

  • Java 超详细讲解数据结构中的堆的应用

    目录 一.堆的创建 1.向下调整(以小堆为例) 2.创建堆 3.创建堆的时间复杂度 二.堆的插入和删除 1.堆的插入 2.堆的删除 三.堆的应用 1.堆排序 2.top-k问题 [求最小的K个数] 四.常用接口的介绍 1.PriorityQueue的特性 2.优先级队列的构造 一.堆的创建 1.向下调整(以小堆为例) 让parent标记需要调整的节点,child标记parent的左孩子(注意:parent如果有孩子一定先是有左孩子) 如果parent的左孩子存在,即:child < size,

  • Java超详细讲解SpringMVC如何获取请求数据

    目录 1.获得请求参数 1)基本类型参数:​​​​​​​   2)POJO类型参数: 3)数组类型参数   4)集合类型参数   2.请求乱码问题 3.参数绑注解@RequestParam​​​​​​​ 4.获得Restful风格的参数 5.自定义类型转换器 6.获得请求头 7.文件上传 8.小结 1.获得请求参数 客户端请求参数的格式是:name=value&name=value- - 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数: 1)基本类型

  • Java 超详细讲解SpringMVC拦截器

    目录 拦截器(interceptor)的作用 拦截器和过滤器区别 拦截器快速入门 多拦截器操作 拦截器方法说明 本章小结 拦截器(interceptor)的作用 Spring MVC 的 拦截器 类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行 预处理 和 后处理 . 将拦截器按一定的顺序联结成一条链,这条链称为 拦截器链(Interceptor Chain) .在访问被拦截的方 法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用.拦截器也是AOP思想的具体实现.

  • Java 超详细讲解Spring MVC异常处理机制

    目录 异常处理机制流程图 异常处理的两种方式 简单异常处理器SimpleMappingExceptionResolver 自定义异常处理步骤 本章小结 异常处理机制流程图 系统中异常包括两类: 预期异常 通过捕获异常从而获取异常信息. 运行时异常RuntimeException 主要通过规范代码开发.测试等手段减少运行时异常的发生. 系统的Dao.Service.Controller出现都通过throws Exception向上抛出,最后SpringMVC前端控制器交由异常处理器进行异常处理,如

随机推荐