前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浅析Java语言中接口的特点和继承相关知识

浅析Java语言中接口的特点和继承相关知识

作者头像
Java进阶者
发布于 2023-11-29 07:15:50
发布于 2023-11-29 07:15:50
17300
代码可运行
举报
运行总次数:0
代码可运行

山寺钟鸣昼已昏,渔梁渡头争渡喧。

前面几篇文章用Java带大家一起了解Java的部分基础知识,感兴趣的小伙伴们可以去学习下了,一篇文章带你了解Java类的设计和封装及类成员的访问控制一篇文章带你了解this关键字和单例模式Java基础入门篇——面向对象和类的定义,这篇文章带大家一起学习下Java知识中的接口及其继承知识,一起来看看吧。

一、接口的继承

1.定义一个接口使用extends关键字来继承另一个接口,这就是接口的继承。

2.语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[修饰符] interface 接口名 extends 父类接口1, 父类接口2,{
        定义常量0个或多个;
        定义抽象方法0个或多个;
}

3.如何实现接口的继承关系例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//定义Printer接口
interface Printer{
    int max_line=20;//定义全局常量
    void printRun();//定义抽象方法pirntRun()
    void printData();//定义抽象方法printData()
}
//定义了Autopriner接口,然后继承Printer接口
interface Autoprinter extends Printer{//接口继承
    void autoPrint();//定义抽象方法autoPrint()方法
}

//Colorprinter类实现Printer接口
class Colorprinter implements Autoprinter{
    //实现printRun()方法
    public void printRun(){
        System.out.println("彩色打印机正在启动");
  }
    //实现printData()方法
    public void printData(){
        System.out.println("彩色打印机正在打印中");
  }
    //实现autoPrint()方法
    public void autoPrint(){
        System.out.println("彩色打印机自动打印");
  }

}
public class p27 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Colorprinter c=new Colorprinter();//创建Colorprinter类的实例对象
        c.printRun();//调用Colorprinter类的printRun()方法
        c.printData();//调用Colorprinter类的printData()方法
        c.autoPrint();//调用Colorprinter类的autoPrint()方法
  }
}

输出的结果是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
彩色打印机正在启动
彩色打印机正在打印中
彩色打印机自动打印

从上面的代码中,首先是定义了Printer接口,定义全局常量和两个方法分别是printRun()和printData(),然后再定义一个Autopriner接口来继承Printer接口,再Colorprinter类实现Printer接口,此时,Autopriner接口有三个抽象方法,通过Colorprinter类实例化对象然后调用对应的方法。

二、接口的特点

1.接口里的方法是抽象的,不可以去实例化对象。

2.如果实现某接口的类是抽象类,那么可以不实现该接口的所有方法。对于这个抽象类任何一个不是抽象类的子类来说,就需要实现所有抽象方法。

3.一个类使用implements关键字实现多个接口

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//定义A接口
interface A{
    int MAX=1;//定义全局常量
    void testA();//定义抽象方法testA()
}
//定义B接口
interface B{
    int MAX=2;//定义全局常量
    void testB();//定义抽象方法testB()
}
//定义一个类实现A,B接口
class C implements A,B{
    int MAX=3;//定义全局常量
    //实现testB()方法
    @Override
    public void testB() {
        // TODO Auto-generated method stub
        System.out.println("我是B");
}
    //实现testA()方法
    @Override
    public void testA() {
        // TODO Auto-generated method stub
        System.out.println("我是A");
  }
}
public class p28 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        C c=new C();//创建C类实例对象
        c.testA();//调用C类的testA()方法
        c.testB();//调用C类的testB()方法
  }
}

运行的结果是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
我是A
我是B

从上面代码中,定义了A和B接口,在C类中使用implements关键字实现A和B的接口的方法,实例化对象并调用对应的方法。

4.一个接口使用extends关键字实现继承多个接口

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//定义A接口
interface A{
    int MAX=1;//定义全局常量
    void testA();//定义抽象方法testA()
}
//定义B接口
interface B{
    int MAX=2;//定义全局常量
    void testB();//定义抽象方法testB()
}
//定义接口继承A,B接口
interface C extends A,B{
    int MAX=3;//定义全局常量
    void testC();//定义testC()方法
}
public class p29 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(A.MAX);
        System.out.println(B.MAX);
        System.out.println(C.MAX);
  }
}

运行的结果是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1
2
3

5.一个类在实现某接口的抽象方法,就需要使用一样的方法头。

6.如果实现某接口的类不是抽象类,那么类的定义部分需要实现指定接口的所有抽象方法。

三、总结

本文主要介绍了接口的继承和接口的特点。

接口的继承是定义一个接口使用extends关键字来继承另一个接口,通过如何实现接口的继承例子来帮助大家的理解这个用法。

一个类使用implements关键字实现多个接口,一个接口使用extends关键字实现继承多个接口。

希望大家通过本文的学习,对你有所帮助!

------------------- End -------------------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java进阶学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
多线程-概述及底层实现机制浅析
在打算写这篇多线层底层实现机制的时候,突然发现自己对于计算机竟然懂得这么表面,对于CPU的工作原理都不完全清楚,于是又转头查看了一些CPU相关的资料。也不敢钻的太深,怕自己迷路...,其中如有错误,望知道的朋友在下面留言评论,我会及时更新的。
進无尽
2018/09/12
1.2K0
多线程-概述及底层实现机制浅析
什么叫应用程序域?(zhuan)
“域”,就是范围,环境,边界的意思,那么什么是应用程序域,官方给出的是这样的解释:操作系统和运行库环境通常会
全栈程序员站长
2022/09/07
4020
.Net托管世界的应用程序域和线程-网摘
.Net框架提供了全新的计算平台,给出了一致性的面向对象的编程环境,解决了安全、版本控制等原来系统平台中存在的问题,通过 公用语言运行库(CLR)提供了一个高效、安全的程序执行环境,也就是托管(也称作受控,Managed)环境。在这个类似虚拟机环境下,我们编写的程序 是如何运行、如何“托管”的呢?这个托管的世界如何同非托管的世界相互联系呢?
jack.yang
2025/04/05
870
C#基础知识学习之 ☀️ | 多线程的使用基础
线程在程序中经常被用到,现在的计算机都是可以异步执行很多操作的,所以多线程的作用可见一斑!
呆呆敲代码的小Y
2021/10/29
7920
C#基础知识学习之 ☀️ | 多线程的使用基础
并发编程之进程与线程
单核CPU下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,将CPU的时间片(windows下时间片最小约为15毫秒)分给不同的线程使用,只是由于CPU在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。总结为一句话就是 :微观串行,宏观并行。 一般会将这种线程轮流使用CPU的做法称为并发,concurrent
海仔
2020/02/18
3800
并发编程之进程与线程
快速入门系列--CLR--02多线程
最近,由于基础框架的整体升级,因此需要更新所有相关项目的DLL文件。这个过程存在不小的风险,因此也对发布后的生产服务器进行了密切的监控,结果还是出现了个别应用出现异常的情况,很快的占用了大量的服务器内存和CPU等资源。通过研究dump,初步发现是由于配置服务器出现单点故障,然后应用通过多线程调用相关SOA服务时出现异常,引发了ThreadAbortException异常,而且由于原有异常处理代码不够严谨,而且与异步发送报警邮件紧密结合在一起,造成线程数量的几何级增加,最终使得整个服务器不可用。这儿介绍的不算
用户1216676
2018/01/24
9340
快速入门系列--CLR--02多线程
JUC 多线程01--线程、进程概念
正在进行中的程序。 每一个进程至少有一个线程。当程序运行时在内存空间中开辟一片独立空间。每一个进程都有一个执行顺序。 一个进程更象一个任务。 进程的内存原理:
潇洒
2023/10/20
1390
JUC 多线程01--线程、进程概念
java多线程系列_线程简介(1)
    线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。
Hongten
2018/09/13
5930
.Net 中各种线程同步锁
编程编的久了,总会遇到多线程的情况,有些时候我们要几个线程合作完成某些功能,这时候可以定义一个全局对象,各个线程根据这个对象的状态来协同工作,这就是基本的线程同步。
tuoxie
2024/08/18
1740
.Net 中各种线程同步锁
多线程与多进程
操作系统比如 Mac OS X,Linux,Windows 等,都是支持“多任务”的操作系统,操作系统可以同时运行多个任务。一边在逛淘宝,一边在听音乐,一边在用微信聊天,这就是多任务,至少同时有 3 个任务正在运行。
@小森
2024/03/15
1000
多线程与多进程
.NET简谈组件程序设计之(AppDomain应用程序域)
最近在苦学.NET底层框架模型,发现.NET深入真的不是一般的难,不开源、没有相关系统的官方的书籍做学习资料,只能零散的看MSDN。要想摸熟.NET的模型真的并非易事。慢慢来吧。[王清培版权所有,转载请给出署名]
王清培
2022/03/14
3150
.NET简谈组件程序设计之(AppDomain应用程序域)
.NET简谈组件程序设计之(初识远程调用)
在.NET1.0版本出来的时候,要想进行远程调用基本上都是通过WebService的方式。而随着.NET2.0版本的出现,我们可以通过一个更加方便且高扩展性的框架来进行编写远程调用的程序,也就是我们都比较熟悉的.NetRemoting。
王清培
2022/03/14
3060
.NET简谈组件程序设计之(初识远程调用)
18 Python 基础: 重点知识点--进程和线程讲解
本文首发于腾讯云+社区,也可关注微信公众号【离不开的网】支持一下,就差你的关注支持了。
野原测试开发
2019/07/24
7410
18 Python 基础: 重点知识点--进程和线程讲解
进程和线程的区别
进程和线程的区别 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做
猿人谷
2018/01/17
1.5K0
进程和线程的区别
.NET 面试题汇总(带答案)
答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。
庞小明
2021/07/08
1.3K0
Enterprise Library 4.0缓存应用程序块
英文原文:http://msdn.microsoft.com/zh-cn/library/cc511588(en-us).aspx Enterprise Library 缓存应用程序块允许开发人员在应用程序中合并一个局部缓存,它支持内存内的缓存,和可选的可以是数据库存储或独立存储的后端存储。应用程序块可以不做修改的使用,它提供所有必须的获取、添加和移除缓存数据的功能。可配置的到期和清除策略也是应用程序块的一部分。 在构建企业范围发布的应用程序时,架构和开发人员都要面对许多挑战,缓存可以帮助他们战胜其中的包
张善友
2018/01/19
1K0
线程、进程、多线程、多进程、多任务,傻傻分不清?
进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
PHP开发工程师
2021/05/14
4840
线程、进程、多线程、多进程、多任务,傻傻分不清?
Golang中的协程(goroutine)
        进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间。一个进程至少有5种基本状态:初始状态,执行状态,等待状态,就绪状态,终止状态。通俗的讲,进程就是一个正在执行的程序。
周小末天天开心
2023/10/16
6990
解析.NET对象的跨应用程序域访问(上篇)
彭泽0902
2018/01/04
1.1K0
解析.NET对象的跨应用程序域访问(上篇)
C# Assembly
在C#中,Assembly是.NET框架的一个基本构建模块。它可以被看作是一个包含代码和资源的可部署单元,通常以DLL或EXE文件的形式存在。Assembly承载了以下几个关键特性:
JusterZhu
2025/01/23
1270
C# Assembly
相关推荐
多线程-概述及底层实现机制浅析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档