Java基础:接口

news2024/10/5 21:17:10

1.接口的概念

 

当不是所有子类, 而是多个子类都包含一个方法时, 为了代码书写规范性, 可以用自定义的接口来统一该方法的书写规范. 所以接口可以看作是一种书写规则.

接口是对行为的抽象

抽象类一般是书写在父类当中, 接口是单独书写的, 不是一种类

2.接口的定义和使用

3.接口中成员的特点

4.接口和类的关系

当一个类实现多个接口, 并且多个接口中有重名的方法时, 只用实现一个接口中的同名方法.(也就是说每个方法只实现一次)

若类implements子接口, 那么就需要重写所有的抽象方法(包括父接口方法)

5.接口和抽象类的综合案例

package cn.ncepu.demo1.a02abstrctdemo2;

public abstract class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public abstract void work();

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Person{name = " + name + ", age = " + age + "}";
    }
}


package cn.ncepu.demo1.a02abstrctdemo2;

public class PingPong extends Person implements Speak{
    public PingPong() {
    }

    public PingPong(String name, int age) {
        super(name, age);
    }

    @Override
    public void work() {
        System.out.println("学打乒乓球");
    }

    @Override
    public void speak() {
        System.out.println("说英语");
    }
}

package cn.ncepu.demo1.a02abstrctdemo2;

public class Basketball extends Person{
    public Basketball() {
    }

    public Basketball(String name, int age) {
        super(name, age);
    }

    @Override
    public void work() {
        System.out.println("学打篮球");
    }
}


package cn.ncepu.demo1.a02abstrctdemo2;

public class PingPongCoach extends Person implements Speak{
    public PingPongCoach() {
    }

    public PingPongCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void work() {
        System.out.println("教打乒乓球");
    }

    @Override
    public void speak() {
        System.out.println("说英语");
    }
}

package cn.ncepu.demo1.a02abstrctdemo2;

public class BasketballCoach extends Person{
    public BasketballCoach() {
    }

    public BasketballCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void work() {
        System.out.println("教打篮球");
    }
}


package cn.ncepu.demo1.a02abstrctdemo2;

public interface Speak {
    public abstract void speak();
}


package cn.ncepu.demo1.a02abstrctdemo2;

public class Test {
    public static void main(String[] args) {
        PingPong pingPong = new PingPong("乒乓球运动员", 18);
        Basketball basketball = new Basketball("篮球运动员", 20);

        PingPongCoach pingPongCoach = new PingPongCoach("乒乓球教练", 35);
        BasketballCoach basketballCoach = new BasketballCoach("篮球教练", 38);

        pingPong.work();
        basketball.work();
        pingPongCoach.work();
        basketballCoach.work();

        pingPongCoach.speak();
        pingPong.speak();
    }
}



6.接口中的新增方法

1.有方法体的方法接口

目的 : 为了在父类接口中添加新规则的同时又使已经实现的子类接口不报错

如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写 : 意思是当一个类implements多个接口时, 这几个接口中存在相同名字的默认方法, 这时如果创建类的实例来引用方法就不知道去哪个接口中寻找, 所以必须在类中重写该默认方法.

2. 在接口中定义静态方法

接口中的static方法不能被重写.

通过接口名.方法名(); 来调用static静态方法.

3.在接口中定义私有方法

目的 : 当默认方法和静态方法中有相同功能的代码块时(重复书写的部分), 就通过私有方法用来提取出来写一个方法, 在默认方法和静态方法中直接调用就可以

不加static的私有方法是为默认方法服务的

加static的私有方法是为静态方法服务的

7.接口应用

8.适配器设计模式

当我们不想重写接口中的所有方法, 而只想创建类实现接口中的部分方法时, 我们可以创建一个适配器类用来空重写接口的所用方法, 然后继承适配器类, 重写需要用到的方法就可以了. (一般适配器是abstrct的, 不让外部创建对象)

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

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

相关文章

MATLAB/Simulink 通信原理及仿真学习(一)

文章目录MATLAB/Simulink 通信原理及仿真学习(一)基本操作 (23.2.16)MATLAB 变量矩阵运算画图工具函数函数文件操作MATLAB/Simulink 通信原理及仿真学习(一) 基本操作 (23.2.16) MATLAB 变量 变量以字母开头,后接字…

Ubuntu16.04搭建Fabric1.4环境

一、换源 为了提高下载速度,将ubuntu的源改成国内的源(推荐阿里云源和清华源) apt源保存在 /etc/apt/sources.list / 代表根目录 /etc 这个文件夹几乎放置了系统的所有配置文件 1.备份 sudo cp /etc/apt/sources.list sources_backup.l…

媒体邀约之企业如何加强品牌的宣传力度

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。胡老师分享了许多媒体传播方面的经验,今天就跟大家分享下我对企业宣传方面的看法。企业如何加强品牌的宣传力度:1,网络宣传在社交媒体上建立企业账户&am…

Jmeter常用断言之响应断言详解

响应断言是最常用的一种断言方法,主要是对响应结果中的文本内容进行断言,比如响应结果是否包含指定的值,或者是否等于指定的值。响应断言可以适用各种返回类型的响应结果,如:Test、html、application/json、applicatio…

安装 cplex 求解器

安装 cplex 求解器 安装 cplex 求解器和python-docplexcplex 安装matlab 用户安装 cplexpython 版本安装 cplex 求解器和python-docplex cplex 安装 cplex 是解决优化问题的一个工具箱,用来线性规划、混合整数规划和二次规划的高性能数学规划求解器。可以理解成&a…

《爆肝整理》保姆级系列教程python接口自动化(十六)--参数关联接口后传(详解)

简介 大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需 …

实现聊天消息绘制、图文混排(源码,支持Windows、Linux)

在实现聊天软件时,渲染文字表情图文混排是一项非常繁琐的工作,再加上还要支持GIF动图、引用消息、撤回消息、名片等不同样式的消息渲染时,就更加麻烦了。 好在我们可以使用 ESFramework 提供的 IChatRender 组件,使用它我们就能轻…

小众免费的短视频素材库

推荐5个小众但好用的视频素材网站,免费可商用,视频剪辑、自媒体必备~ 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky ​ 菜鸟图库网素材非常丰富,网站主要还是以设计素材为主,高清视频素材也很多,像风…

(考研湖科大教书匠计算机网络)第四章网络层-第六节3:开放最短路径优先OSPF的基本工作原理

获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:OSPF概述(1)概述(2)细节阐述A:链路状态和代价B:问候分组和邻居表C&#xff…

如何保证集合是线程安全的 ConcurrentHashMap如何实现高效地线程安全?

第10讲 | 如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全? 我在之前两讲介绍了 Java 集合框架的典型容器类,它们绝大部分都不是线程安全的,仅有的线程安全实现,比如 Vector、Stack,在性能方面也…

智能家居项目(一)之基础概念引入

目录 一、智能家居功能整体流程 二、设计模式 三、C语言中结构体的新玩法,承接上一步 四、工厂模式概念引入 一、智能家居功能整体流程 1.控制区语音识别模块socket客户端 2.外设区继电器组控制灯,远程终端子系统,窗帘等,火灾…

数据分析面试---假设检验知识点

文章目录一、假设检验是干啥的二、假设检验基本原理/思想三、假设检验步骤显著性检验(significance test)统计显著性和置信度补充:第一类错误和第二类错误p值是啥链接1数理统计中的统计推断问题主要有两大类:参数估计问题和假设检验问题参数估计问题 所指…

[datawhale202302]CS224W图机器学习:图的基本表示及特征工程

结论速递 本章涉及了图基本表示及传统的特征工程。 图由节点和连接组成,节点和连接上都可以有不同的属性。根据属性的特点,分为几类不同的图,其中异质图和二分图是比较重要的特殊图。 图可以用邻接矩阵进行结构化表示,如果图过于…

单元测试的优势

单元测试提供了许多好处,包括及早发现软件错误、促进变化、简化集成、提供文档来源以及许多其他优点,接下来将对其进行详细介绍。 1、使流程更灵活 单元测试的主要好处之一是它使编码过程更加灵活,更遵循敏捷开发方法论。 当向软件中添加越来…

如何加入new bing候补名单

如何加入new bing候补名单 我们都知道现在最新版edges中已经提示我们可以加入new bing候补名单,但国内环境下无法正常加入new bing候补名单,这篇文章讲告诉你如何绕过限制加入new bing候补名单 下载配置 HeaderEditor 插件 下载地址microsoftedge.mic…

XDSpy APT组织近期针对俄罗斯国防部的攻击活动分析

一 概述 XDSpy是ESET于2020年首次披露的APT组织,该组织最早活跃于2011年,主要针对东欧和塞尔维亚地区的政府、军队、外交部及私人公司进行窃密活动。2020年9月,该组织在攻击活动中使用Covid-19主题诱饵下发恶意Windows脚本文件(W…

高通平台开发系列讲解(Sensor篇)IAM20680驱动程序的使用

文章目录 一、相关编译宏二、设备树配置三、打开iio自动挂载脚本四、模块加载验证沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 IAM20680 驱动程序。 一、相关编译宏 目录:arch/arm/configs CONFIG_IIO_BUFFER=y CONFIG_IIO_KFIFO_BUF=y CONFIG_II…

Highcharts.Chart

Highcharts 是一个使用javascript 脚本来生成图表的工具,和jfreechart 作用类似,都用来生成各种图表,并支持图片的导出和打印。 从官网 www.highcharts.com 上下载的压缩表中的example中有各种图表的例子。 要编写生成图表的例子建议从 文…

生成小分子力场TOP

生成小分子力场TOP ATB网站 生成基于Amber力场适配gromacs格式TOP文件, 对于使用GaussView 计算resp电荷可以参考: https://blog.csdn.net/weixin_42486623/article/details/129055384 下面我们使用上面是生成的mol2文件来生成基于Amber的力场&#x…

Linux网络编程 | 彻底搞懂零拷贝(zero-copy)技术

传统文件传输的问题 在网络编程中,如果我们想要提供文件传输的功能,最简单的方法就是用read将数据从磁盘上的文件中读取出来,再将其用write写入到socket中,通过网络协议发送给客户端。 ssize_t read(int fd, void *buf, size_t …