【JavaSE】Java基础语法(十八):接口

news2024/11/28 0:50:17

文章目录

  • 1. 接口的概述
  • 2. 接口的特点
  • 3. 接口的成员特点
  • 4. 类和接口的关系
  • 5. 抽象类和接口的关系


在这里插入图片描述

1. 接口的概述

  • 接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。
  • Java中接口存在的两个意义
    • 用来定义规范
    • 用来做功能的拓展

2. 接口的特点

  • 接口用关键字interface修饰
public interface 接口名 {}
  • 类实现接口用implements表示
public class 类名 implements 接口名 {}
  • 接口不能实例化
    • 我们可以创建接口的实现类对象使用
  • 接口的子类
    • 要么重写接口中的所有抽象方法
    • 要么子类也是抽象类

3. 接口的成员特点

  • 成员特点
    • 成员变量
      • 只能是常量
      • 默认修饰符:public static final
  • 构造方法
    • 没有,因为接口主要是扩展功能的,而没有具体存在
  • 成员方法
    • 只能是抽象方法
    • 默认修饰符:public abstract
    • 关于接口中的方法,JDK8和JDK9中有一些新特性,后面再讲解
  • 代码演示
public interface Inter {
	public static final int NUM = 10;
	public abstract void show();
}


class InterImpl implements Inter{
	public void method(){
		// NUM = 20;
		System.out.println(NUM);
	}
	
	public void show(){
	}
}

public class TestInterface {
	/*
		成员变量: 只能是常量 系统会默认加入三个关键字
		public static final
		构造方法: 没有
		成员方法: 只能是抽象方法, 系统会默认加入两个关键字
		public abstract
	*/
	public static void main(String[] args) {
		System.out.println(Inter.NUM);
	}
}

4. 类和接口的关系


类和接口在Java编程中都起着非常重要的作用。类负责实现具体功能,而接口负责提供规范,以便实现类进行统一的设计。根据不同的场景和需求,我们需要合理的运用类和接口来达到最优的设计效果。

  • 类与类的关系
    继承关系,只能单继承,但是可以多层继承
  • 类与接口的关系
    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口与接口的关系
    继承关系,可以单继承,也可以多继承

类和接口都可以看做是一种抽象模型,用于描述某个概念或事物。

类是一个具体的实现,可以包含成员变量、普通方法、构造器等,并且可以被继承。而接口则定义了

一组规范,只包含常量和抽象方法,并且可以被实现。

一个类可以直接实现一个或多个接口,从而满足接口规范。这种方式称为接口实现(implements)。

一个类还可以继承另一个类,并同时实现一个或多个接口。这种方式称为类继承(extends)和接口实现,并且需要先继承类再实现接口。

接口可以作为一种契约机制,强制实现类满足某些条件。通过使用接口,可以降低程序间的耦合度。


5. 抽象类和接口的关系


抽象类和接口是Java中实现抽象化的两种机制,它们有以下关系:

  1. 抽象类和接口都可以作为抽象化的工具,用于对某种抽象概念进行模型化。

  2. 抽象类是类的一种,可以包含普通方法、成员变量、构造器等。而接口则是全局常量和抽象方法的集合。

  3. 一个类可以实现多个接口,但只能继承一个抽象类。

  4. 抽象类可以提供默认实现,子类可选择重写或调用父类的实现。接口不能提供默认实现,实现类必须实现所有的接口方法。

  5. 抽象类也可以包含抽象方法,子类必须实现这些抽象方法;接口只能包含抽象方法,实现类必须实现所有的接口方法。

抽象类和接口在某些功能上有重叠,但它们各自有独特的使用场景和优点。抽象类主要适用于实现代码重用和封装,接口则主要用于实现程序间的解耦和多态性设计。在实际编程中,我们需要结合具体情况去选择使用哪种抽象化机制。


在这里插入图片描述

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

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

相关文章

SpringBoot3.0升级遇到关于Invalid bound statement (not found)处理方案

前言 今天升级SpringBoot3时尝试兼容Mybatis和MybatisPlus出现多个异常。顺带写写排查方案,springboot2其实也一样用 排查方向:mapper接口中的方法名和mapper.xml中的id标签不一致 仔细核对抛出异常的接口和xml文件名。方法名排查方向:.map…

基于docker容器化的jenkins2.406升级迁移(jdk8升级jdk11)

查看基础配置 查看jenkins的home路径: 查看磁盘占比: 发现占比比较大的是: 主要子目录: jobs:包含Jenkins管理的构建作业的配置细节、构建产物和数据;logs:Jenkins的日志目录;plugins:包含所有已经安装了…

低代码开发平台助力门店管理创新,提升用户体验

随着信息技术的飞速发展,低代码开发成为了近年来热门的开发方式。同时,在零售业中,门店管理也成为了一个重要的议题。本文将结合低代码开发和门店管理两个主题,探讨如何应用低代码技术优化门店管理。 一、门店管理的挑战 门店管…

Ansible从入门到精通【二】

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步! 我的主页:早九晚十二 专栏名称:Ansible从入门到精通 立志成为ansible大佬 文章目录 ansible常用命令ansibleansible-d…

Revit幕墙:用幕墙巧做屋面瓦及如何快速幕墙?

一、Revit中用幕墙巧做屋面瓦 屋面瓦重复性很高,我们如何快速的创建呢?下面我们来学会快速用幕墙来创建屋面瓦的技巧。 1.新建“公制轮廓-竖挺”族,以此来创建瓦的族(以便于载入项目中使用) 2.在轮廓族中绘制瓦的轮廓(轮廓需要闭合),将族名称…

淘宝天猫618预售活动时间是从几号什么时候开始2023天猫淘宝618预售定金能退吗?

2023年淘宝天猫618预售什么时候开始? 2023年5月26日20:00淘宝天猫618预售活动开始截至到5月31日18:00结束; 2023年淘宝天猫618预售定金支付后可退吗? 淘宝天猫618预售定金支付后如不想要该预售商品了,可以在5月31日20:00后完成尾…

如何获得高清、4K无水印视频素材?教你轻松拥有高清视频

随着短视频越来越火爆,大家也都加入到了视频创作的行业中,平时也会喜欢剪辑一些视频发布到平台上,那高清的短视频肯定是最受欢迎的,我们自己又如何获得高清的视频呢? 一、为什么需要高清的视频素材? 1. 视…

基于非靶向和靶向代谢组学分析婴幼儿血管瘤的氨基酸代谢

文章标题:Integrated nontargeted and targeted metabolomics analyses amino acids metabolism in infantile hemangioma 发表期刊:Frontiers in Oncology 影响因子:5.738 作者单位:四川大学华西医院 百趣提供服务&#xf…

prometheus 部署安装

prometheus 部署安装 监控系统硬件(node-exporter)监控mysql (mysql_exporter)监控redis(redis_exporter)监控docker (cadvisor)监控可视化展示 (Grafana)监控报警 (Ale…

Adams几何元素

简单学了一下Adams的几何元素,记录一下面板。 1.几何点 Point Add to Ground 添加到大地 Add to Part 添加到现有构件 Attach Near 关联构件 Don’t Attach 不关联构件 创建添加行,输入点坐标。创建好的点可以在导航栏右键删除和修改。 2. 坐标系Mar…

ROS学习——利用电脑相机标定

一、 安装usb-cam包和标定数据包 sudo apt-get install ros-kinetic-usb-cam sudo apt-get install ros-kinetic-camera-calibration 要把kinetic改成你自己的ros版本 。 二、启动相机 roslaunch usb_cam usb_cam-test.launch 就会出现一个界面 可以通过下面命令查看相机…

leetcode 1140. Stone Game II(石头游戏II)

涉及game的问题&#xff0c;2个player, 现有几堆石头&#xff0c;每堆石头个数为piles[i], 刚开始M1, player1先拿石头&#xff0c;可以拿走前 x 堆&#xff08;假设从第 i 堆开始拿&#xff0c;可以拿 i ~ ix-1 堆&#xff09;&#xff0c;1 < x < 2M, 拿完之后&#xf…

2023.5.19Hadoop具体操作(四种)

大作业 1、ens33没有地址 查看虚拟机的NAT8网段 使用ip a显示ens33的ip ip a设置静态ip 编辑网络接口配置文件&#xff1a;输入以下命令来编辑网络接口的配置文件&#xff1a; sudo vi /etc/network/interfaces在打开的文件中&#xff0c;找到要设置为静态IP的网络接口&am…

来领走你的AI老师

现在很多大学生不上课&#xff0c;在b站学习。 有没有想过有一天&#xff0c;你的大多数时间都在跟AI学习&#xff1f; 未来已来&#xff0c;这里有一份万能提示词&#xff0c;让你立马拥有一位AI导师。 这位导师可了不得&#xff0c;除了啥都知道之外&#xff0c;还能&…

C# 队列(Queue)

目录 一、概述 二、基本的用法 1.添加元素 2.取出元素 1&#xff09;Dequeue 方法 2&#xff09;Peek 方法 3.判断元素是否存在 4.获取队列的长度 5.遍历队列 6.清空容器 7.Queue 泛型类 三、结束 一、概述 表示对象的先进先出集合。 队列和其他的数据结构一样&a…

Ros2中MoveItConfigsBuilder的功能作用说明

文章目录 前言MoveItConfigsBuilder的功能作用机器人resource文件样例总结 前言 在学习moveit2的样例时发现加载机器人配置参数多使用MoveItConfigsBuilder&#xff0c;它具体的功能和使用方法是什么呢。 这篇博文用来记录说明该函数的使用方法、作用和调用逻辑。 MoveItConfi…

Tomcat的讲解与安装

文章目录 前言一.Tomcat是什么二.Tomcat的原理三.Tomcat的安装和说明**1.下载****2.解压安装**bin目录conf目录lib目录log目录temp目录webapps目录work目录 3.配置环境变量 四.验证安装 前言 Tomcat 是一个 HTTP 服务器. 前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 …

共享电单车RFID停车技术分析

近段时间&#xff0c;某地主城区运营商信号基站受严重干扰&#xff0c;造成300多个基站&#xff0c;超过5万的用户受到影响。据无线电监测站的调查确认干扰源来自共享电单车&#xff0c;是共享电单车加装的RFID停车标签惹的祸&#xff0c;而该地区RFID终端选用的是超高频&#…

考研C语言复习第二章

考研C语言第二节课 2.1 #include <stdio.h> //符号常量 #define PI 32 int main() {int iPI*2;printf("i%d\n",i); // printf("Hello, World!\n");return 0; }在这里的define相当于一个替换的作用&#xff0c;是直接将PI是32整个搬到下面 所以…

M洞察|“MOBA”还是“MMO”?2023上半年热门手游大盘点来了,拯救你的游戏荒

2023年Q1中国移动游戏市场整体表现不及预期&#xff0c;实际销售收入为486.94亿元&#xff0c;同比下降19.42%。虽整体有所下滑&#xff0c;但新鲜血液依然迸发强劲。 3月22日&#xff0c;一款玩法轻松、新颖的种田类手游《桃源深处有人家》正式上线&#xff0c;玩家纷纷投入其…