接口基础知识

简介: 接口基础知识

在Java中提供了一个关键字 interface ,用这个关键字我们可以定义出一个特殊的结构:接口


1. 接口不能创建对象

• 注意接口不能创建对象,接口是用来被实现的,实现接口的类被称为实现类


2.实现类写法格式

修饰符 class 实现类 implements 接口1,接口2,接口3,


一个类可以实现多个接口,实现类实现多个接口,就必须重写完全部接口的全部抽象方法,否则定义成抽象类。


3.接口中定义的成员变量都是常量,成员方法在接口中默认为抽象方法

public interface A {
    //接口中定义的成员变量都是常量
    //成员变量(常量)
    String name="hei";
 
    //成员方法(在接口中默认为抽象方法)
    void testa1();
    void testa2();
 
}

 4.使用接口有什么好处?

• 可以解决单继承的问题,通过接口,我们可以让一个类去继承一个父类的同时,去实现多个接口,这样可以拓展自己的功能


• 为什么要通过接口,来扩展自己的功能呢?

因为通过接口去找,通过你implements的接口,就可以显性的知道你是谁,从而就可以放心的把你当作谁来用了


• 一个类可以实现多个接口,同样,一个接口也可以被多个类实现。


这样做的好处是 我们的程序就可以面向接口编程了,这样就可以很方便的灵活切换各种业务实现了。


5.接口的注意事项

1.一个接口继承多个接口,如果多个接口中存在|方法签名|冲突,则此时不支持多继承,如下:

interface I{
void Test1();
}
 
interface J{
String Test1();
}

2.一个类实现多个接口,如果多个接口中存在方法冲突,则此时不支持多实现

class E implements I,J{}

3.一个类继承了父类,有同时实现了接口,接口和父类有同名的默认方法,实现类会优先使用父类

class X{} class E extends X implements A{}

注:先继承  再接口

4.

 interface A{}
    interface B{}
    interface C{}
//接口是多继承的
    interface D extends A,B,C{}
//实现类E只需要实现一个D,就可以拥有A,B,C,D的功能,便于实现类去实现
    class E implements D{}
相关文章
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
11425 4
|
JavaScript 前端开发 UED
如何配置 Webpack 进行代码分离?
通过以上方法,可以有效地配置Webpack进行代码分离,根据项目的具体需求和场景选择合适的方式,能够显著提高应用的性能和用户体验。在实际应用中,还可以结合其他优化技术,进一步优化Webpack的打包结果和应用的加载速度。
382 5
|
10月前
|
存储 人工智能 关系型数据库
HiveChat:告别模型选择困难!开源ChatGPT聚合神器上线:一键切换10+模型,权限管控全免费
HiveChat 是一款专为中小团队设计的开源 AI 聊天应用,支持多种主流 AI 模型,提供高效的团队沟通和智能辅助功能。
398 9
HiveChat:告别模型选择困难!开源ChatGPT聚合神器上线:一键切换10+模型,权限管控全免费
|
存储 数据挖掘 OLAP
Doris数据库的效率为什么很高
【6月更文挑战第8天】Doris数据库的效率为什么很高
1027 9
|
8月前
|
存储 Java 数据挖掘
Java 中数组的多种定义方式
本文深入解析了Java中数组的多种定义方式,涵盖基础的`new`关键字创建、直接初始化、动态初始化,到多维数组、`Arrays.fill()`方法以及集合类转换为数组等高级用法。通过理论与实践结合的方式,探讨了每种定义方法的适用场景、优缺点及其背后的原理,帮助开发者掌握高效、灵活的数组操作技巧,从而编写更优质的Java代码。
415 0
|
设计模式 API C#
C# 一分钟浅谈:GraphQL 服务器端实现
本文通过C#语言从零开始构建一个简单的GraphQL服务器端实现,介绍了环境准备、项目创建、定义Schema、配置GraphQL等步骤。同时,探讨了常见问题如数据源问题、类型定义不一致、性能问题和权限控制,提供了相应的解决方法。希望帮助读者更好地理解和应用GraphQL。
176 3
|
前端开发 JavaScript API
前端界的革命性突破:掌握这些新技术,让你的作品引领潮流!
【10月更文挑战第30天】前端技术日新月异,从传统的HTML、CSS、JavaScript到现代的React、Vue、Angular等框架,以及Webpack、Sass等工具,前端开发经历了巨大变革。本文通过对比新旧技术,展示如何高效掌握这些新技术,助你作品引领潮流。
245 2
|
JavaScript 数据可视化
JS如何优雅的实现模块自动滚动展示
【8月更文挑战第22天】JS如何优雅的实现模块自动滚动展示
352 1
JS如何优雅的实现模块自动滚动展示
|
负载均衡 网络协议 安全
DNS解析中的Anycast技术:原理与优势
【9月更文挑战第7天】在互联网体系中,域名系统(DNS)将域名转换为IP地址,但网络规模的扩张使DNS解析面临高效、稳定与安全挑战。Anycast技术应运而生,通过将同一IP地址分配给多个地理分布的服务器,并依据网络状况自动选择最近且负载低的服务器响应查询请求,提升了DNS解析速度与效率,实现负载均衡,缓解DDoS攻击,增强系统高可用性。此技术利用动态路由协议如BGP实现,未来在网络发展中将扮演重要角色。
1085 0
|
安全 编译器 C语言
【C++ 类型转换关键字 *_cast 】理解const_cast、reinterpret_cast、dynamic_cast和static_cast的用法
【C++ 类型转换关键字 *_cast 】理解const_cast、reinterpret_cast、dynamic_cast和static_cast的用法
604 0