接口(Interface)

news2024/11/28 0:41:47

接口

基本介绍

接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。

class 类名 implements 接口{
    自己属性;
    自己方法;
    必须实现的接口的抽象方法;  // 只需要重写抽象方法即可
}

接口中的方法使用:

1、抽象方法: 在接口中,可省略 abstract 关键字

2、默认实现方法, default修饰符只能在修饰接口方法时使用。在普通类的方法中不能使用。

3、静态方法

interface 接口名{
    // 属性
    // 方法 1、抽象方法 2、默认实现方法  3、静态方法
    // 1、抽象方法: 在接口中,省略了 abstract 关键字
    public void say();  // public abstract void say();
    
    // 2、默认实现方法, default修饰符只能在修饰接口方法时使用。在普通类的方法中不能使用。
    default void speak(){
        System.out.println("speak ...");
    }
    
    //3、静态方法
    static void cry(){
        System.out.println("cry ...");
    }
}

注意:

1、在jdk7前,接口中的所有方法都没有方法体。

2、jdk8之后,接口类中可以写静态方法、默认方法【默认修饰符】,也就是说接口中可以有方法的具体实现。

接口的使用

1、接口不能被实例化。

2、接口中的所有方法都是public方法,接口中的所有方法,默认被 abstract 修饰,即为抽象方法。

public修饰符证明方法:实现类的重写中,重写方法的修饰符只能比父类权限大

3、一个普通类实现接口类,就必须将该接口中的所有抽象方法都实现。

4、抽象类实现接口,可以不用实现接口的方法。

5、一个类可以同时实现多个接口。

class A implements Week, Enumeration01{
    // Override 接口中的方法。
 }

6、一个接口不能继承其他的类,但是可以继承[extends]多个别的接口

interface A extends B, C{}

7、接口中的属性,只能是final的,而且是public static final 修饰符。

interface A{
    int n1 = 10;  // 等价于 public static final int n1;
}

8、接口中属性的方法形式为:接口名.属性名

9、接口的修饰符,只能是 public 和 默认,这点和类的修饰符一致。

interface 接口名{
    // 属性
    // 方法 1、抽象方法 2、默认实现方法  3、静态方法
    // 1、抽象方法: 在接口中,可省略 abstract 关键字
    public void say();

    // 2、默认实现方法, default修饰符只能在修饰接口方法时使用。在普通类的方法中不能使用。
    default void speak(){
        System.out.println("speak ...");
    }

    //3、静态方法
    public static void cry(){
        System.out.println("cry ...");
    }
}

实现接口和继承类的比较

实现接口机制 是对 单继承 缺陷的补充。

如果子类需要扩展功能,可以通过实现接口的方式去进行扩展

class LittleMonkey extends Monkey implements Fly, Swimming

接口和继承解决的问题不同

1、继承的价值主要在于:解决问题的复用性和可维护性

2、接口的价值在于:设计,设计好各种规范(方法),让其他类去实现这些方法

接口比继承更加灵活

接口比继承更加灵活,继承是满足 is - a的关系,而接口只需满足 like - a的关系

接口在一定程度上实现代码的解藕

接口规范性 + 动态绑定 在讲解集合的时候,会具体讲解。

接口的多态

1、接口引用可以指向实现了接口的类的对象

2、接口多态数组。

3、接口的多态传递。

package com.interfac_;

public class Test {
    public static void main(String[] args) {
         C a = new A();
    }
}


interface B extends C{
    int b = 20;
}

interface C{
    void speak();
}
class A implements B{
    @Override
    public void speak() {
        System.out.println("speak ...");
    }
}
package com.interfac_;

public class Test extends A implements B{
    public void speak(){
        //接口中的x值是,public static final int x,为静态属性,则直接用类名进行调用。        
        System.out.println("x的父类值为:" + super.x + "接口的x值为:" +  B.x);
    }
    public static void main(String[] args) {
        Test test = new Test();
        test.speak();
    }
}


class A{
    int x = 1;
}

interface B{
    int x = 2;
}

在这里插入图片描述

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

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

相关文章

硬盘接口损坏换电路板

1.有一块西数1T的蓝盘,SATA接口L形塑料掰断了,顾换块板解决接触不良问题 2.买板子,看好板子上印刷的版号,2060-771829-005 REV A,tb上买一片通型号的,十几块 3.用烙铁焊下原来烂板的8个脚的BIOS芯片&…

java.lang.noclassdeffounderror: com/fasterxml/jackson/core/util/jacksonfeature

建议直接查看我的原博 1.问题 环境&#xff1a; springboot2.3.10.RELEASE jdk1.8 elasticsearch8.8.1 根据官网&#xff0c;使用es时pom文件需要引入json工具&#xff0c;这里使用了jackson-databind&#xff1a; <dependency><groupId>co.elastic.clients…

栈(单位数计算器)

方法&#xff1a; 判断优先级 判断字符还是数字 计算方法 查看栈顶元素 思路 个位数计算器的代码&#xff1a; package calculator;public class Calculator {public static void main(String[] args) {String exp "78*9-2";Stack num new Stack(10);Stack op…

【CSS】浮动

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;HTMLCSS &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 浮动浮动的规则浮动的案例浮动的清除 浮动 float属性可以指定一个元素应沿其容器的…

Linux中配置sudo用户访问权限

文章目录 一、如何在 Linux 中配置 sudo 的访问权限1.1、添加一个Linux普通用户有 sudo 权限1.2、测试普通用户的 sudo 权限1.3、添加多个Linux普通用户有 sudo 权限1.4、验证sudo 权限 一、如何在 Linux 中配置 sudo 的访问权限 1.1、添加一个Linux普通用户有 sudo 权限 [ro…

部分抓包测试

linux下使用tcpdump抓包&#xff0c;生成pcap格式文件&#xff0c;利用wireshark打开&#xff0c;进行数据包分析 tcpdump常用选项&#xff1a; -a&#xff1a;尝试将网络和广播地址转换成名称&#xff1b; -c<数据包数目>&#xff1a;收到指定的数据包数目后&#xff0…

又一款国产AI聊天工具360智脑

介绍 360智脑是一个基于深度学习技术的大型语言模型&#xff0c;能够进行自然语言理解和生成。它拥有海量的语料库和强大的计算能力&#xff0c;可以应用于智能客服、智能问答、机器翻译等多种场景&#xff0c;为用户提供高效准确的服务和支持。 功能测试 写代码 功能齐全 …

使用Flask Web创建一个调用ChatGPT API的网页--简单示例(Windows环境下)

前提&#xff1a;你应该要有一个能正常使用chatGPT的openAI账号&#xff1b;即你已经成功注册了chatGPT&#xff0c;并能正常使用。 文章目录 一、主要组成部分二、示例代码2.1 工程结构&#xff1a;2.2 说明2.3 依赖环境2.4 app.py代码2.5 index.html代码 三、搭建环境步骤 一…

Spark Sql 4/5

4. 用户自定义函数 通过spark.udf功能用户可以自定义函数。 4.1用户自定义UDF函数 Shellscala> val df spark.read.json("examples/src/main/resources/people.json")df: org.apache.spark.sql.DataFrame [age: bigint, name: string]​scala> df.show()--…

PSI算法经典论文算法概述

文章目录 什么是隐私求交PSIPSI协议分类PSI算法的分类基于哈希函数的PSI算法基于不经意传输&#xff08;OT&#xff09;的 PSI算法基于GC的PSI算法基于公钥加密的PSI算法基于DH的PSI算法基于RSA盲签名的PSI算法基于同态加密的PSI算法 基于差分隐私的PSI算法 总结参考文献 什么是…

wails+vue3实现一个简单Monitor

介绍 本来呢最近是在学Rust,顺便看看Tauri相关的内容.然后刷评论区突然看到有人提到go生态中也有类似的框架—Wails,所以下午花了点时间来动手玩一下. 首先看一下最终的运行效果,前端样式懒得调整所以界面很丑只是实现一下功能 开始 这次的目标就是做一个功能类似于nvidia-s…

C#基础学习_字段与属性的比较

C#基础学习_字段与属性的比较 字段: 字段主要是为类的内部做数据交互使用,字段一般是private修饰; 字段可以赋值也可以读取; 当需要为外部提供数据的时候,请将字段封装为属性,而不是使用公有字段,这是面对对象编程所提倡的。 //字段:学号private int studentID;属性: …

语义分割大模型RSPrompter论文阅读

论文链接 RSPrompter: Learning to Prompt for Remote Sensing Instance Segmentation based on Visual Foundation Model 开源代码链接 RSPrompter 论文阅读 摘要 Abstract—Leveraging vast training data (SA-1B), the foundation Segment Anything Model (SAM) propo…

vue动态组件component详解

附上代码 <template><div class"export-full-data-manage"><div class"main"><div class"left"><ul><li v-for"item in menus" :key"item.value" :class"[item.valuecurrent?curre…

【UE5 Cesium】11-Cesium for Unreal 切换Dynamic Pawn为其它Pawn

前言 我们知道在Cesium for Unreal中默认使用的是DynamicPawn来浏览地图场景。DynamicPawn适用全球浏览&#xff0c;可以按自定义曲线进行飞行。但是DynamicPawn是使用的是地理参考坐标系&#xff0c;并不是标准的UE坐标系&#xff0c;当我们全球浏览结束后&#xff0c;可能需要…

2023年6月榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩)发布!

飞瓜轻数发布2023年6月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站UP主。 飞…

工作是EXCEL的天下

文章目录 EXCEL单元格内的换行筛选某一列的重复值批量删除重复值以某一列为联结&#xff0c;合并两个表格中的内容 本篇博文记录了笔者在工作中常用的EXCEL操作方法&#xff0c;持续更新中…… EXCEL单元格内的换行 AltEnter 筛选某一列的重复值 选中需要查找重复值的一列→…

如何在Microsoft Word中制作组织架构图

如果要说明公司或组织中的报告关系,可以创建一个使用组织结构图布局的 SmartArt 图形,如组织结构图。 注意:绘制组织结构图的另一种方法是使用 Microsoft 绘图应用程序 Visio。 使用 SmartArt 图形在 Excel、Outlook、PowerPoint 或 Word 中创建组织结构图,以显示组织中的…

磁盘镜像软件

什么是磁盘镜像 磁盘镜像是存储在计算机磁盘中的数据的副本或副本。磁盘镜像将包含数据存储设备的内容&#xff0c;并复制此类设备的结构。它还将包含操作系统分区。 磁盘镜像本质上是一种从主系统复制操作系统和存储在磁盘中的数据以将其分发到其他目标计算机的方法。自动化…

4.40ue4:样条线(轨迹)

1.创建样条线&#xff08;样条组建&#xff09; spline 多出一个点&#xff0c;按住alt拖住断点可以再生成一个点 可以在场景中拖动点编辑样条线 如果想要直角&#xff0c;可以点击细节面板找到spline组件&#xff0c;修改类型为linear&#xff0c;前后两点都需要改为绝对值&a…