【java基础——interface接口】

news2024/11/25 3:07:29

JAVA基础

interface接口


文章目录

  • JAVA基础
    • 接口 Interface


接口 Interface

接口是一种特殊的抽象类,它定义了一组抽象方法和常量,并且不包含具体实现。

  1. 只允许声明静态常量:必须且默认为 public static final 。
  2. 声明抽象方法:必须且默认为 public abstract ,没有具体实现。实现接口的类必须实现接口中所有的抽象方法。
  3. 默认方法(JDK 8+):在接口中有默认实现的方法。可以使用 default 关键字来定义默认方法。默认方法可以被实现接口的类继承或重写。
  4. 静态方法(JDK 8+):静态方法是在接口中有静态实现的方法。可以使用 static 关键字来定义静态方法。静态方法只能在接口内部使用,不能被实现接口的类继承。
  5. 私有方法(JDK 9+):私有方法是在接口中有私有实现的方法。可以使用 private 关键字来定义私有方法。私有方法只能在接口内部使用,不能被实现接口的类继承或重写。

default 方法:更新接口时添加的新方法,允许旧类实现接口而不实现该方法。

  • 可以直接在接口内实现,供没有定义的旧类直接使用。若类中实现了该方法则覆盖。
  • 如果类实现了多个接口且拥有同名 default 方法:
    • 两个接口若存在继承关系,调用时优先使用子类方法。
    • 否则,必须重写子类 default 方法,通过 super 关键字明确实现哪个接口:

public interface DemoInterface {

    /**
     * 常量 默认为 public static final.
     */
    int MY_INTEGER = 10;
    String MY_STRING = "Hello";

    /**
     * 抽象方法.默认为 public abstract
     */
    void abstractMethod();

    /**
     * 默认方法(JDK 8+).默认方法可以被实现接口的类继承或重写。
     */
    default void defaultMethod() {
        staticMethod();
        System.out.println("Doing something...");
    }

    /**
     * 静态方法(JDK 8+).静态方法只能在接口内部使用,不能被实现接口的类继承。默认 public
     */
    static void staticMethod() {
        System.out.println("Doing something static...");
    }

    /**
     * 私有方法(JDK 9+):私有方法只能在接口内部使用,不能被实现接口的类继承或重写。
     */
    private void somePrivateMethod() {
        System.out.println("Doing something privately...");
    }
}


public class DemoInterfaceImpl implements DemoInterface {
	
    @Override
    public void abstractMethod() {
        System.out.println(MY_INTEGER);
        System.out.println(MY_STRING);
        defaultMethod();
    }

    /**
     * 10
     * Hello
     * Doing something static...
     * Doing something...
     */
    @Test
    public void test() {
        abstractMethod();
    }
}

在这里插入图片描述

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

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

相关文章

数据结构1

数据结构是计算机科学中存储和组织数据的一种方式,它定义了数据的表示方式和对数据进行操作的方法,常见的数据结构包括数组、栈、链表、队列、树、图等。 目录 一、常见的数据结构 1.数组 2.栈 3.队列 4.链表 5.树 6.图 一、常见的数据结构 1.数…

H5 + C3基础(五)(seo相关标签 顶部快捷栏实践 Logo seo)

seo相关标签 & 顶部快捷栏实践 seo相关标签titledescriptionkeywords 顶部快捷栏实践Logo seo seo相关标签 seo:搜索引擎优化,是一种利用搜索引擎规则提高网站在搜索引擎结果中自然排名的方式,进而提高网站的自然流量。 前端开发中主要s…

【Tkinter系列01/15】界面初步和布局

一、说明 一般来说,界面开发中,如果不是大型的软件,就不必用QT之类的实现,用Tkinter已经足够,然而即便是Tkinter规模不大,也需要一个系统专业的学习过程,本篇将是对Tkinter系列介绍的一篇博文。…

JavaSE(下)

一、集合进阶 双列集合Map<>【Java】Map集合概述 双列集合特点 Map常见API 三种遍历方式 1、由键找值,创建键的集合 2、通过键值对对对象进行遍历 3、利用lambda表达式进行遍历 HashMap HashMap的特点 HashMap的底层 总结 例题 package com.itheima.Mapdemo;import java.…

探索音视频出海的无限可能|中企出海领袖班第八期成功举办

​近年来&#xff0c;音视频社交出海赛道的热度吸引了众多企业纷纷进军海外市场。然而&#xff0c;面对复杂多变的海外市场&#xff0c;无论是产品的本地化策略&#xff0c;还是对海外网络环境的适应以及网络安全防御等因素&#xff0c;都成为决定产品能否在海外市场脱颖而出的…

Error while validating pooled Jedis object.

如何处理 jedis得连接池得异常&#xff0c;顺着找到Jedis的工厂类JedisFactory&#xff0c;对应看下这两个方法的实现&#xff0c;熟悉的代码找到了&#xff0c;可疑的点也找到了&#xff1a; public boolean validateObject(PooledObject<Jedis> pooledJedis) {final Bi…

widnows 制作winpe启动盘

下载 官网 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 点击装机版&#xff0c;进行下载&#xff0c;等待下载完成 安装 解压 双击exe运行 插入u盘 识别到的u盘 点击【一键制作成usb启动盘】 点击确定&#xff0c;等待制作完成 重启电脑&#xff0c;选择从…

问道管理:市盈率市净率两个指标含义怎么算?

市盈率和市净率是出资领域常用的两个目标&#xff0c;用于评价公司的估值和出资的报答状况。本文将从多个视点剖析这两个目标的含义和计算方法&#xff0c;帮助读者更好地了解和运用它们。首先&#xff0c;市盈率&#xff08;P/E ratio&#xff09;是用来衡量公司股票价格与每股…

【Win10安装NVIDIA驱动、CUDA、CUDNN】

Win10安装NVIDIA驱动、CUDA、CUDNN 1 NVIDIA驱动下载2 下载CUDA2.1 查看CUDA版本2.2 下载并安装CUDA 3 下载并安装CUDNN3.1 输入账号和密码后&#xff0c;登录CUDNN官方网站进行下载3.2 安装3.2.1 解压下载的压缩包3.2.2 将解压后bin目录的内容全部放到CUDA对应的bin目录3.2.3 …

银河麒麟V10(Tercel)服务器版安装 Docker

一、服务器环境 ## 查看系统版本&#xff0c;确认版本 cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Tercel)## 操作系统 uname -p aarch64## 内核版本&#xff08;≥ 3.10&#xff09; uname -r 4.19.90-21.2.ky10.aarch64## iptables 版本&#xff08;…

基于JavaFX的贪吃蛇小游戏

游戏背景介绍 贪吃蛇游戏是一款经典的小游戏&#xff0c;它的玩法很简单&#xff0c;就是控制蛇吃食物&#xff0c;每吃一个食物蛇的长度就会加一&#xff0c;直到蛇撞到墙壁或者撞到自己时游戏结束&#xff0c;最终的得分是蛇的长度减一。 JavaFX 用Java开发桌面端首选就是J…

姿态角 IMU 地磁

阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。希望互相进步谢谢&#xff01;&#xff01; 文章目录 阅读前请看一下&#xff1a;我是…

Fedora Linux 的家族(一):官方版本

导读本文将对 Fedora Linux 官方版本进行更详细的介绍。共有五个 版本&#xff1a; Fedora Workstation、Fedora Server、Fedora IoT、Fedora CoreOS 和 Fedora Silverblue。Fedora Linux 下载页面目前显示其中三个为 官方 版本&#xff0c;另外两个为 新兴 版本。本文将涵盖所…

计算机毕设 基于深度学习的图像超分辨率重建 - opencv python cnn

文章目录 0 前言1 什么是图像超分辨率重建2 应用场景3 实现方法4 SRResNet算法原理5 SRCNN设计思路6 代码实现6.1 代码结构组织6.2 train_srresnet6.3 训练效果 7 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少…

1.4 编写简易ShellCode弹窗

在前面的章节中相信读者已经学会了使用Metasploit工具生成自己的ShellCode代码片段了&#xff0c;本章将继续深入探索关于ShellCode的相关知识体系&#xff0c;ShellCode 通常是指一个原始的可执行代码的有效载荷&#xff0c;攻击者通常会使用这段代码来获得被攻陷系统上的交互…

市值暴跌后,每日优鲜能否靠2亿融资“续命”?

濒临破产退市的每日优鲜&#xff0c;靠转型实现“自救”&#xff1f; 作为“生鲜电商第一股”&#xff0c;每日优鲜在上市1年后爆发生存危机。 8月4日&#xff0c;每日优鲜(NDAQ:MF)公布了2022年报&#xff0c;尽管去年7月其宣布关闭营收占比约90%的DWM业务&#xff0c;全面终…

每日一题——柱状图中最大的矩形

柱状图中最大的矩形 题目链接 用什么数据结构&#xff1f; 要得到柱状图中最大的矩形&#xff0c;我们就必须要知道对于每一个高度heights[i]&#xff0c;他所能勾勒出的矩形最大是多少&#xff08;即宽度最大是多少&#xff09;。 而对应到图上我们可以知道&#xff0c;要知…

vue naive ui 按钮绑定按键

使用vue (naive ui) 绑定Enter 按键 知识点: 按键绑定Button全局挂载使得message,notification, dialog, loadingBar 等NaiveUI 生效UMD方式使用vue 与 naive ui将vue默认的 分隔符大括号 替换 为 [[ ]] <!DOCTYPE html> <html lang"en"> <head>…

助力养殖行业数字化转型,基于深度学习模型开发构建牛脸识别系统

在我们以往接触到的项目或者是业务场景中&#xff0c;大多牵涉到生物特征识别的任务基本都是人脸识别&#xff0c;这也是目前我们每天都会接触到的应用&#xff0c;比如&#xff1a;上下班的打卡、支付时的刷脸等等&#xff0c;这也是比较成熟的一项AI应用。 这里我们简单对一…

用智能汽车完成自救,高通的光明与暗夜!

这几年国产汽车的在智驾驶的发力&#xff0c;无疑受到了各行各业的瞩目&#xff0c;汽车智能化已经逐步走进大众视野。 我们之前阐述过高通在3C数码领域的见解与财报预测&#xff0c;随着第三财季的业绩报告显示&#xff0c;可以看到的是智能手机、IoT 市场的低迷让高通的营收…