广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中接口的深入详解
  • 499
分享到

Java中接口的深入详解

2024-04-02 19:04:59 499人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、接口接口的格式三、接口的特点接口的使用四、类与接口的关系接口多重继承的好处练习总结一、前言 前面我们说了抽象类的概述,我们对抽象类也有个认识和理解了,现在我们学习十分

一、前言

前面我们说了抽象类的概述,我们对抽象类也有个认识和理解了,现在我们学习十分重要的内容接口,接口这个词比较的抽象,但其实也是十分好理解的。

二、接口

简单的说,接口就是一种被规范的标准,只要符合这个标准都可以通用,接口的表现在于对行为的抽象。 就好比插座,每个厂商生产的插座我们都可以用,这是因为他们有同一个标准,这里插座就是接口。

接口的格式

格式1:

public interface 接口名

格式2:

interface  接口名

三、接口的特点

①多态的实例化用implement关键字


public  interface usb{}//定义一个接口
 
public  class  computer implements  usb{}//创建一个类实现接口

②接口不能被直接实例化,可以通过多态的形式实现实例化


usb  u =new computer();

③接口中都是抽象方法和常量,不可能有非抽象方法,常量必须被赋值。

常量默认被public  static final

方法默认被public static   abstractl修饰


public final int  num1=10;√
num1=20;×
int num2=10;√
num2=20;×
上面两个正确的写法等价
public  abstract  void method1();√
void  method2();√

直接int num=10,创建的a是常量

④多态的前提:

有继承或实现关系

有方法的重写,

有父类或父接口引用指向子类或实现类对象

⑤接口的实现类

必须重写接口中的所有方法,不想重写则可以是抽象类(加上abstract)

但是子类继承了该抽象类必须重写接口中的方法。

⑥接口只能被public修饰

接口的使用

service包下


package service;
 
public interface EatService {
    void eat();
}

service包下的impl包下


package service.impl;
 
import service.EatService;
 
public class CatImpl implements EatService {
    @Override
    public void eat() {
        System.out.println("?吃?");
    }
 
}

在controller包下


package controller;
 
import service.EatService;
import service.impl.CatImpl;
 
public class CatController {
    public static void main(String[] args) {
        EatService e=new CatImpl();
        e.eat();
    }
}

四、类与接口的关系

类和类之间是继承关系

接口和接口之间是继承关系

类和接口之间是实现关系(类实现接口)

类只支持单继承(即一个子类只有一个父类),可以实现多个类


public class  A  extends  B implements C,B,D....{}

接口之间可以多重继承。


public interface a implements b,c,d.....{}

接口多重继承的好处

定义了许多接口,如果一个设备要同时实现那么多接口将是不小的开销,对于同能

同类的可以把他用一个接口继承起来,这样这个接口就要了那些接口的全部功能,我们

使用类只要实现一个就可以了。

接口1


package service;
 
public interface EatService {
    void eat();
}

接口2


package service;
 
public interface PlayService {
    void play();
}

接口3


package service;
 
public interface SleepService {
    void sleep();
}

总接口:用来继承上面三个接口


package service;
 
public interface SumService extends SleepService,EatService,PlayService {
}

此时原来的类实现只要实现一个总接口即可

旧:


public class CatImpl implements EatService,PlayService,SleepService {
//方法重写
}

新:


public class CatImpl implements SumService {
//方法重写
}

在controller中调用也是简单不少


package controller;
import service.SumService;
import service.impl.CatImpl;
public class CatController {
    public static void main(String[] args) {
        SumService ss=new CatImpl();
        ss.eat();
        ss.play();
        ss.sleep();
 
    }
}

练习

定义一个接口用来实现两个对象的比较。


package cn.com.Classwork190124;

public interface CompareObject<object> {
    public int compareto(object o);
    //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
}

定义一个Circle类。


package cn.com.Classwork190124;

public class Circle {
    private double radius;
    private final double PI=3.14;

    public double findArea(){
        return PI*radius*radius;
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }
}

定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。


package cn.com.Classwork190124;

public class ComparableCircle extends Circle implements CompareObject<Circle> {
    @Override
    public int compareto(Circle o) {
        if(this.getRadius()==o.getRadius()){
            return 0;
        }else if(this.getRadius()<=o.getRadius()){
            return -1;
        }else {
            return 1;
        }
    }
}

定义一个测试类TestInterface,创建两个ComaparableCircle对象,调用compareTo方法比较两个类的半径大小。


package cn.com.Classwork190124;

import java.util.Scanner;

public class TestInterface {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ComparableCircle c1 = new ComparableCircle();
        ComparableCircle c2 = new ComparableCircle();
        c1.setRadius(sc.nextDouble());
        c2.setRadius(sc.nextDouble());
        System.out.println(c1.compareto(c2));
    }
}

思考:参照上述做法定义矩形类Rectangle和ComparableRectangle类,在ComparableRectangle类中给出compareTo方法的实现,比较两个矩形的面积大小。

总结

到此这篇关于Java中接口的文章就介绍到这了,更多相关Java接口详解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java中接口的深入详解

本文链接: https://www.lsjlt.com/news/158631.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中接口的深入详解
    目录一、前言二、接口接口的格式三、接口的特点接口的使用四、类与接口的关系接口多重继承的好处练习总结一、前言 前面我们说了抽象类的概述,我们对抽象类也有个认识和理解了,现在我们学习十分...
    99+
    2022-11-12
  • Java深入解析接口interface
    目录1.接口定义示例2.接口细节01示例3.接口细节024.接口细节035.接口多态特性1.接口定义 基本介绍 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根...
    99+
    2022-11-13
  • 如何深入理解Java中的接口
    今天就跟大家聊聊有关如何深入理解Java中的接口,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、前言前面我们说了抽象类的概述,我们对抽象类也有个认识和理解了,现在我们学习十分重要的...
    99+
    2023-06-21
  • 深入理解java中抽象类和接口
    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方。往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇文章各位都能从容地明了二者...我所理解的抽象...
    99+
    2021-07-19
    java入门 java 抽象类 接口
  • java Clone接口和深拷贝详解
    对于数组的拷贝,如果是简单类型的话是深拷贝,如果是引用类型的话是浅拷贝,但是因为java是面向对象的,在回答面试官问题的时候,我们可以不用说的这么细,可以直接说浅拷贝。 代码示例1 ...
    99+
    2022-11-12
  • java并发之Lock接口的深入讲解
    目录Juc中各种各样锁信息synchronized面临缺点Lock接口Lock最佳实践:对比 Lock和tryLock的区别总结Juc中各种各样锁信息 在java的juc包为我们提...
    99+
    2022-11-12
  • 深入理解C#之接口
    目录C#之接口接口的特性:接口的继承:接口的覆盖:接口和抽象类的区别。C#中的接口和类有什么异同。总结C#之接口 在编程中,我们经常会用到接口,那什么是接口呢? 接口描述的是可属于任...
    99+
    2022-11-12
  • 深入浅出讲解Java集合之Map接口
    目录一、Map接口继承树二、Map接口中的常用方法三、源码分析1.HashMap的底层实现原理?2.LinkedHashMap的底层实现原理(了解)四、Collections工具类一...
    99+
    2022-11-12
  • 深入浅出讲解Java集合之Collection接口
    目录一、集合框架的概述二、集合框架(Java集合可分为Collection 和 Map 两种体系)三、Collection接口中的方法的使用四、集合元素的遍历操作A. 使用(迭代器)...
    99+
    2022-11-12
  • Java Cloneable接口的深拷贝与浅拷贝详解
    目录Cloneable接口源码浅拷贝案例Pet类定义Person类定义浅拷贝问题-代码测试深拷贝案例Pet类重写clone()方法Person的clone()方法中调用Pet的clo...
    99+
    2022-11-13
  • Java Cloneable接口的深拷贝与浅拷贝详解
    Java中的Cloneable接口是一个标记接口,用于标识一个类可以被克隆。该接口没有定义任何方法,但是在使用clone()方法进行...
    99+
    2023-08-17
    Java
  • Java中Future接口详解
    目录一、背景二、Future接口1、入门案例2、Future接口三、CompletableFuture类1、基础说明2、核心方法2.1 实例方法2.2 计算方法2.3 结果获取方法2...
    99+
    2023-05-16
    Java中Future接口 Java Future
  • 深入Golang的接口interface
    目录前言接口转换的原理实现多态前言 go不要求类型显示地声明实现了哪个接口,只要实现了相关的方法即可,编译器就能检测到 空接口类型可以接收任意类型的数据: type eface st...
    99+
    2022-11-13
  • Java+TestNG接口自动化入门详解
    目录一、环境准备:(根据自己电脑配置来选择安装版本,我的电脑是64位,所以此处选择64位安装)二、环境安装:三、TestNG接口自动化实现四、创建自己的第一个接口自动化脚本五、批量执...
    99+
    2022-11-12
  • Java中接口的多态详解
    目录多态参数多态数组接口的多态传递现象总结多态参数 就像我们现实生活中电脑的usb接口,我们既可以接受手机对象,又可以接受相机对象,等等,体现了接口的多态,查看以下代码 接口: pa...
    99+
    2022-11-13
  • 深入浅析Java 抽象类和接口
    目录一、抽象类1.抽象类1.1抽象类的定义1.2抽象方法的定义方式1.3抽象类的定义方式2.抽象类和实例类的区别3.抽象类示例4.抽象类的特征二、接口1.接口1.1接口的定义1.1定...
    99+
    2022-11-12
  • 详解Java中Collector接口的组成
    一、Collector常常出现的地方 java8引入了stream,Collector是与stream一起出现的,配合stream使用的好帮手,如果用过stream,我们应该都有写过...
    99+
    2022-11-12
  • 详解Java 中的函数式接口
    目录@FunctionalInterface注解最简单的函数式接口基础数据类型的函数表达式二元输入参数的函数Two-ArityFunctionSpecializationsSuppl...
    99+
    2022-11-12
  • java中的interface接口实例详解
     java中的interface接口实例详解接口:Java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法。java接口的特点如下:java接口不能被实例化2、java接口中声明的成员自动被设置为public,所以不存在...
    99+
    2023-05-31
    java interface ava
  • 深入理解JAVA抽象类和接口的比较与异同
    目录一、理解抽象类  二、从语法定义层面看抽象类和接口三、从编程的角度看抽象类和接口四、从设计理念层面看抽象类和接口五、总结 抽象类(abstract ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作