谈谈接口 0.0

news2024/11/20 10:43:38

目录

接口的概念

接口语法

接口的成员变量与方法

接口的使用

实现多个接口


接口的概念

在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等...

电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备。

电源插座插孔上,可以插:电脑、电视机、电饭煲...

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用!

那么在java中怎么定义接口呢?

在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。


接口语法

通过interface定义一个接口

interface IShape {
    
}

接口的成员变量与方法

那么接口中的成员有哪些呢?

interface IShape {
    int a = 10;
    void draw();
    
}

细心的小伙伴会发现-这个draw方法没有用abstract修饰为何能这样写呢?

这是因为你这样的话编译器会默认加上下面的东西:

interface IShape {
    public static final int a = 10;
    
    public abstract void draw();

}

在编译器中我们也可以注意到这些是灰色的:

 因此我们可以总结:

接口中的成员变量默认是 public static final修饰的

接口中的成员方法默认是 public abstract修饰的

接口当中不能有普通的方法(java8开始可以有default和static方法,可以有具体的实现)

interface IShape {
    public static final int a = 10;

    public abstract void draw();

    public static void test1() {

    }
    default void test2() {

    }
}

接口的使用

接口类型是一种引用类型,可以认为比抽象类还抽象,因此是不能new一个对象的。但是可以用关键词 implements 来实现接口。(要重写接口当中所有的抽象方法)

如下:

 那么怎么调用呢?

接口通过向上转型和动态绑定


实现多个接口

在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口

下面我们举个多接口例子:

我们先定义两个接口(跑,游泳),和一个抽象类(Animal)和一个Dog类

下面代码可以理解为:Dog是一个动物具有游泳的特性

//接口1
public interface IRunning {

    void running();

}



//接口2
public interface ISwimming {

    void flying();
}



//Animal类
public abstract class Animal {
    public String name;
    public int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public abstract void eat();
}


//狗类继承Animal类实现ISwimming,IRunning接口
//可以理解为Dog是一个动物具有游泳和跑的功能
public class Dog extends Animal implements ISwimming,IRunning{

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
       
        System.out.println("吃狗粮");

    }

    @Override
    public void swimming() {
        System.out.println("游泳");

    }


    @Override
    public void running() {
        System.out.println("跑");

    }
}

下面演示怎么调用,写一个Test类调用。

public class Test {

    public static void test1(Animal animal) {
        animal.eat();
    }

    public static void test2(IRunning iRunning) {
        iRunning.running();
    }

    public static void test3(ISwimming iSwimming) {
        iSwimming.swimming();
    }

    public static void main(String[] args) {
        Dog dog = new Dog("汪汪队队长",10);

        test1(dog);

        test2(dog);

        test3(dog);
    }


}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

three.js 基础入门

总体思路: 1. 创建场景 2. 创建物体(指定几何体、材质) 3. 把物体加入场景 4. 创建相机(指定机位及拍摄对象) 5. 创建渲染器(指定画布大小,渲染场景和相机) // 1. 创建场景const s…

【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现

【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现 提示:最近开始在【图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下f-BRS官方代码Pytorch实现前言f-BRS模型运行环境安装1.下载源码并…

MySQL基础(十三)约束

1. 约束(constraint)概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成…

Ubuntu20.04 不能访问磁盘? 挂载/添加磁盘

Ubuntu20.04 不能访问磁盘? 挂载/添加磁盘 1. 判断是否挂载磁盘2. 格式化磁盘3. 挂载磁盘4. 设置磁盘权限5. 重启系统 一般设备刚拿回来的是不会全部挂载的,也就是说,一部分硬盘(机械硬盘)是需要我们自己挂载的&…

如何通过舆情监测系统加强数据分析和舆情管控?

舆情监测系统是一种可以帮助企业、政府等机构了解并掌握公众对其关注的程度,以及对其言论和行动的态度和反应的工具。随着社交媒体的兴起,舆情监测系统也越来越重要,越来越受到各个领域的关注和应用。本文将通过分析国内的具体案例&#xff0…

flex布局中理解flex-grow、flex-shrink、flex-basis属性

参考博客: 深入理解flex布局的flex-grow、flex-shrink、flex-basis flex-basis属性 flex-basis设置子项目占据的空间大小, 如果指定flex-basis的值,则子项目会占用所设置的值。如果没有指定或者设置为auto,子项目占据的大小为wi…

咪咕MGV2000_JL-S905L3-B-当贝纯净桌面线刷固件包

咪咕MGV2000_JL-S905L3-B-当贝纯净桌面线刷固件包-内有教程及短接点 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件&a…

中兴B860AV2.1-T(M)-非高安版-当贝纯净桌面线刷固件包

中兴B860AV2.1-T(M)-非高安版-当贝纯净桌面线刷固件包-内有教程及短接点 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软…

【花雕学AI】32:WeTab——使用 ChatGPT 聊天的新标签页,免费又好用

引言: 你是否厌倦了每次打开浏览器都看到同样的新标签页?你是否想要让你的新标签页更有个性,更有趣,更有用?如果是的话,那么你一定要试试 WeTab! WeTab 是一款免费的浏览器扩展,它…

DiscuzX3.5中,截屏图片的粘贴上传

目录 1 前言 2 网页端实现代码 3 服务器端php代码 4 测试一下 5 注意 1 前言 discuzX系列版本,无论是论坛还是门户,图片上传只能使用选择本地文件并上传的方式,与csdn直接用截屏后,ctrlv粘贴上传图片的方式相比,…

自动核对名单详细教程〖Python版〗

前言 大家好,今天我们来给大家分享一个很实用的东西。最近,有粉丝私信我,能不能做一个大学习自动核对名单的程序,我这个粉丝呢,她作为班级团支书,每次核对大学习的名单感到特别的头疼。那我接下来就来写一个…

国产操作系统---麒麟安装FastDFS

常用命令: fdfs_trackerd /etc/fdfs/tracker.conf start 启动 fdfs_storaged /etc/fdfs/storage.conf start 一、环境准备 环境:麒麟 4.19.90-24.4.v2101.ky10.x86_64 软件包 1. https://github.com/happyfish100/fastdfs/tagsfastDFS 1. …

论文阅读之Parameter-Efficient Transfer Learning for NLP(2019)

文章目录 AbstractIntroductionAdapter tuning for NLPExperiments总结参考 论文名称翻译过来就是“NLP的参数有效迁移学习”,其实就是是目前火热prompt learning(提示学习)出现的铺垫之一了。 NLP第三范式就是预训练模型微调下游任务&#x…

颠覆式变革来了?谷歌将改变搜索引擎展示方式,加入AI对话与短视频

来源 |华尔街见闻 作者 |周晓雯 谷歌搜索结果的展示页面,可能很快就会出现巨大变化。 据报道,谷歌正在改变其呈现搜索结果的方式,将人工智能对话以及更多的短视频和社交媒体帖子纳入其中,这与数十年来促使其成为搜索引擎“霸主”的…

UP主发车啦!撩人仙侠文系列,谁来管管这个反派啊!

本人书龄4年,平时很爱看小说,阅遍无数经典修仙文,熬夜党的最爱啊!!!!我心中的仙侠top,都是我的心头爱。 一般我都会跟朋友说这六本五星级仙侠好文,如果她们不看&#xf…

利用Appuploader上架IPA步骤

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code1vtq5fxoqxjpg Appuploader可以辅助在Windows、linux或mac系统直接申请iOS证书p12,及上传ipa到App Store。方便在没有苹…

Shell脚本练习

求100以内正奇数和 注意点: $[]和$(()):是进行数学运算的。支持 - * / %:分别为 “加、减、乘、除、取模”。但是注意,bash只能作整数运算,对于浮点数是当作字符串处理的。{a..b}:表示范围。大于等于a&am…

python3+requests接口自动化测试实例详细操作

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的…

什么是ERP?电商ERP和传统ERP到底有什么不同?

随着电子商务行业的不断发展,传统的ERP系统已经不再适应电商的业务需求,因为这些系统主要是设计用于传统制造和物流公司。 电商企业面临的业务需求与传统制造和物流公司截然不同,因此需要更加灵活和适应性强的解决方案来支持其日常运营。 对…

PointNetGPD代码复现

0、安装分析 Ubuntu版本pcl版本vtk版本18.041.918.2.0 1、pcl1.9安装 1.1 安装依赖 sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-de…