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

文章目录

  • 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. 抽象类也可以包含抽象方法,子类必须实现这些抽象方法;接口只能包含抽象方法,实现类必须实现所有的接口方法。

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


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

听我一句劝,别去外包,干了五年,废了....

先说一下自己的情况,大专生,18年通过校招进入杭州某软件公司,干了接近5年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了5年的功能测试…

c++ 11标准模板(STL) std::map(二)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…

想劝大家别去外包,干了5年,彻底废了......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近5年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四…

提示msvcr120.dll丢失怎么办?由于找不到msvcr120.dll如何修复?

msvcr120.dll 是 Microsoft Visual C 文件中的一个重要组件。它是一种动态链接库&#xff0c;包含了很多函数&#xff0c;提供了许多基础的 C 运行时支持。这个库文件的主要功能是提供 C 应用程序的运行时环境&#xff0c;它是一些常用的 C 运行时库文件的集合。这些库包括了 m…

【Netty】Netty 程序引导类(九)

文章目录 前言一、引导程序类二、AbstractBootStrap 抽象类三、Bootstrap 类四、ServerBootstrap 类五、引导服务器5.1、 实例化引导程序类5.2、设置 EventLoopGroup5.3、指定 Channel 类型5.4、指定 ChannelHandler5.5、设置 Channel 选项5.6、绑定端口启动服务 六、引导客户端…

语法速通 uni-app随笔【uni-app】【微信小程序】【vue】

1、微信小程序 1.1、wx 小程序 工程目录 其中&#xff0c; pages目录/index目录【必有】&#xff1a; index.js 编写业务逻辑 【初始数据&#xff0c;生命周期函数】 index.json 编写配置 index.wxml 编写模板 【可理解为本页html】 index.wxss 【可理解为本页css】 1.2、wx…

cdn配置(超详细+图解+原理)

具体的详细配置在右侧目录翻到“三”&#xff0c;前面的一二是将原理 以腾讯云的cdn为例&#xff0c;其它家的大同小异 一、cdn作用和配置思路 &#xff08;一&#xff09;cdn作用 1.加速访问 cdn服务通常有多个节点缓存&#xff0c;用户可以就近获取&#xff0c;延迟较低 …

如何运行Node.js脚本及读取环境变量

目录 1、如何从CLI 运行Node.js 脚本 2、将字符串作为参数传递到节点&#xff0c;而不是文件路径 3、自动重新启动应用程序 4、如何从Node.js中读取环境变量 1、如何从CLI 运行Node.js 脚本 运行Node.js程序的通常方法是运行全局可用的Node命令&#xff08;一旦安装Node.js…

Linux---文本处理命令(grep、wc、管道符 |)

1. grep命令 grep命令能够在一个或多个文件中&#xff0c;搜索某一特定的字符模式&#xff08;也就是正则表达式&#xff09;&#xff0c;此模式可以 是单一的字符、字符串、单词或句子。 注意&#xff1a;在基本正则表达式中&#xff0c;如通配符 *、、{、|、( 和 )等&#…

蓝桥杯--挖地雷

没有白走的路&#xff0c;每一步都算数&#x1f388;&#x1f388;&#x1f388; 题目&#xff1a; 已知有很多的地窖&#xff0c;每一个地窖中又藏着很多的地雷&#xff0c;每个地窖之间都存在着相连性&#xff0c;但是不是任意的地窖都是相连的&#xff0c;要求我们找出一次能…

深度学习—目标检测标注数据集

深度学习之目标检测 PASCAL数据集 PASCAL VOC挑战赛&#xff08;The PASCAL Visual Object Classes&#xff09;是一个世界级的计算机视觉挑战赛&#xff0c;PASCAL全称&#xff1a;Pattern Analysis&#xff0c;Statical Modeling and Computational Learning&#xff0c;是…

native层函数没有导出时,如何获得相应函数地址?

前言 每次App重新运行后native函数加载的绝对地址是会变化的&#xff0c;唯一不变的是函数相对于基地址的偏移&#xff0c;因此我们可以在获取模块的基地址后加上固定的偏移地址获取相应函数的地址&#xff0c;Frida中也正好提供了这种方式&#xff1a;先通过Module.findBaseA…

Augmented Language Models(增强语言模型)

Augmented Language Models: A Survey 先上地址&#xff1a;https://arxiv.org/pdf/2302.07842.pdf 概率论难以支撑通用人工智能技术的诞生。—— Yann LeCun LLMs取得的巨大进展不再多说&#xff0c;它目前被诟病最多的问题是其会提供非事实但看似可信答案&#xff0c;即幻觉…

MySQL之索引初步

1. 索引概念 数据库是⽤来存储数据&#xff0c;在互联⽹应⽤中数据库中存储的数据可能会很多(⼤数据)&#xff0c; 数据表中数据的查询速度会随着数据量的增⻓而逐渐变慢 &#xff0c;从⽽导致响应⽤户请求的速度变慢——⽤户体验差&#xff0c;我们如何提⾼数据库的查询效率呢…

第一个servlet的程序

文章目录 一.Hello World的程序1.创建项目2.引入依赖3.创建目录4.编写代码5.打包程序6.部署程序7.验证程序 二.简化部署方式1.下载插件2.配置smart Tomcat插件3.测试插件 三.常见的servelt问题出现 404出现 405出现 500出现 "空白页面"出现 "无法访问此网站&quo…

【数据结构】队列详解

本篇要分享的内容是队列的解析和增删查改的使用&#xff0c;以下为本篇目录 目录 1.队列的概念及结构 2.队列的结构 3.队列的初始化 4.队列空间释放 5.入队 6.出队 7.获取队头和队尾元素 获取对头 获取队尾 8.计算队列元素 9.判空 11.本篇所有代码展示 Queue.c Q…

一、尚医通手机登录

文章目录 一、登录需求1、登录效果2、登录需求 二、登录1&#xff0c;搭建service-user模块1.1 搭建service-user模块1.2 修改配置1.3 启动类1.4 配置网关 2、添加用户基础类2.1 添加model2.2 添加Mapper2.3 添加service接口及实现类2.4 添加controller 3、登录api接口3.1 添加…

FPGA——HLS入门-LED闪烁仿真

系列文章目录 文章目录 系列文章目录一、HLS介绍1、什么是HLS2、与VHDL/Verilog有什么关系?3、关键技术局限性 二、Vivado HLS - LED闪烁仿真1、项目配置2、C仿真3、联合仿真 三、总结 一、HLS介绍 1、什么是HLS HLS就是高综合&#xff08;High level Synthesis&#xff09;…

公网远程访问本地jupyter notebook服务 - 内网穿透

文章目录 前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 转载自cpolar的文章&#xff1a;公网远程访问Jupyter Notebook【Cpolar内网穿透】 前言 Jupyter Notebook&am…

最优化方法Python计算:一元函数搜索算法——牛顿法

设函数 f ( x ) f(x) f(x)&#xff0c;在 [ a , b ] [a,b] [a,b]上二阶连续可微且有唯一的最小值点 x 0 x_0 x0​。由于 f ( x ) f(x) f(x)是 [ a , b ] [a,b] [a,b]上的单峰函数&#xff0c;故 f ′ ′ ( x ) > 0 f(x)>0 f′′(x)>0&#xff0c; x ∈ ( a , b ) x\in…