JAVA每日作业day6.25

ok了家人们今天我们学习了,接口这个知识,我们闲话少叙,一起看看吧。

一,接口

1.1 接口概述

接口是功能的集合。接口的内部主要就是定义方法,包含常量,抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK9)。

接口不能创建对象;接口是用来被类实现(implements)的,实现接口的类称为实现类。

好处:

功能的定义与实现分离,优化了程序设计。

程序的扩展性

1.2 接口的定义

定义接口的关键字使用interface

接口中可以定义变量,变量有固定的修饰符修饰:public static final。

接口中的变量也称之为常量,其值不能改变。

接口中可以定义方法,方法有固定的修饰符,public abstract

public interface 接口名 {      
    public static final 数据类型 变量名 = 值      
    public abstract 返回值类型  方法名字(参数列表);
}
public interface MyInterface {

    //固定修饰符public static final 常量
    public static final int N=10;

    int M=20;

    //固定修饰符  public abstract 抽象方法
    public abstract void method01();

    public void method02();
}

1.3 类实现接口

类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。实现类需要重写接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。

public interface MyInterface {

    //固定修饰符 public static final 常量
    public static final int N=10;
 
    int M=20;
    
    //固定修饰符  public abstract 抽象方法
    public abstract void method01();

    public void method02();}
public class DemoTest {
    public static void main(String[] args) {

        //常量被静态修饰,接口的名字直接调用
        System.out.println(MyInterface.N);

        MyInterfaceImpl my=new MyInterfaceImpl();
        System.out.println(my.M); 
       
        my.method01();       
        my.method02();    
    }
}

 1.4 接口的多实现

public interface MyInter01 {

    public void show01();

}
public interface MyInter02 {

    public void show02();

}
public class MyInterImpl implements MyInter01, MyInter02 {

    @Override
    public void show01() {
        System.out.println("show01..."); 
   }    

    @Override
    public void show02() {
        System.out.println("show02...");
    }
}
public class DemoTest {
    public static void main(String[] args) {
        MyInterImpl my=new MyInterImpl();
        my.show01(); 
        my.show02();
    }
}

1.5 继承类同时实现接口

public interface MyInter01 {

    public void show01();

}
public interface MyInter02 {

    public void show02();

}
public class DemoTest {
    public static void main(String[] args) {

        MyInterImpl my=new MyInterImpl();
        my.show01();
        my.show02();
        my.show03();    
    }
}

1.6 接口新增方法

public interface 接口名称 {

    常量(JDK7及其以前)
    抽象方法(JDK7及其以前)
    默认方法(JDK8额外增加)
    静态方法(JDK8额外增加)
    私有方法(JDK9额外增加)

}

 

public interface MyInter {

    /*        默认方法:默认的修饰符是 public default,public可以省略,
default不可以省略        
              可以继承,也可以重写,重写需要去掉default关键字     */
    
    public default void method01(){
        System.out.println("method01...");
    }

    /*        静态方法:静态方法只能通过接口名调用,不能通过实现类名字和对象调用     */

    public static void method02(){
        System.out.println("method02...");
    }

    /*        私有方法:只能在接口中直接调用     */

//    private void method03(){
//        System.out.println("mthod03....")
//    }
}
public class MyInterImpl implements MyInter{

//    @Override
//    public void method01() {
//
//        System.out.println("impl...method01...");
//
//    }
}
public class DemoTest {
    public static void main(String[] args) {

       MyInterImpl my=new MyInterImpl();
       my.method01();

       MyInter.method02();

    }
}

1.7 接口和抽象的区别

相同点

        位于继承的顶端,用于被其他类实现或继承;

        都不能直接创建对象;

        都包含抽象方法,其子类都必须覆写这些抽象方法;

不同点

        抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;

        一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

        抽象类是 继承体系中应该具备的功能, 继承体系是一种 is..a关系

        接口是这个事物中的扩展功能,继承体系是一种 like..a关系

ok了家人们,明天见。

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

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

相关文章

Qt案例-ApplicationExamples-Calqlatr

项目 一个Qt Quick应用程序设计的横向和纵向设备,使用自定义组件,响应式布局和JavaScript的应用程序逻辑。 项目路径: Qt\Examples\Qt-6.7.1\demos 环境:Qt6.7.1 MSVC 2019 64位 项目目录: calqlatr--CMakeList.txt…

详解 ClickHouse 的分片集群

一、简介 分片功能依赖于 Distributed 表引擎,Distributed 表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据 ClickHouse 进行分片集群的…

PHP环境搭建之使用PhpStudy

文章目录 1 PhpStudy1.1 简介1.2 下载&安装1.3 修改配置1.3.1 Apache配置1.3.2 MySQL配置1.3.3 MySQL启动问题 1.4 Composer1.4.1 简介1.4.2 下载安装1.4.3 修改配置1.4.4 使用命令 1 PhpStudy 1.1 简介 phpstudy是一个php运行环境的集成包,用户不需要去配置运…

如何设置windows计划任务

如何设置windows计划任务 前言:在工作过程中写了一个python脚本,用于调用jira接口查询bug单数量,想要在本地定时任务执行,每天发送到钉钉群提醒,写下操作步骤用于记录。 1. 准备 Python 脚本 确保你的 Python 脚本已…

北京崇文门中医医院贾英才主任:脑梗治疗新探索

脑梗,是众多患者心中的阴霾,它的突然来袭,常常让人猝不及防。 一旦发作,偏瘫、失语等症状接踵而至,给患者及其家庭带来沉重的打击,极大地影响了生活的质量。 造成脑梗频发的原因究竟是什么?中…

从特斯拉视角,看智能驾驶研究框架

第一章:回顾历史,智能驾驶的核心主线是算法的演进史,从2017年至今在感知侧规控侧实现算法从规则为主走向端到端。算法方面,2017-2022年,特斯拉在感知侧走向端到端,实现BEVTransformerOccupancy。2021-2023年&#xff0…

算法题--华为od机试考试(最大坐标值、寻找最富裕的小家庭、两个字符串间的最短路径问题)

目录 最大坐标值 题目描述 输入描述 输出描述 示例1 输入 输出 说明 解析 答案 寻找最富裕的小家庭 题目描述 输入描述 输出描述 示例1 输入 输出 说明 解析 答案 两个字符串间的最短路径问题 题目描述 ​编辑 输入描述 输出描述 示例1 输入 输出 …

类和对象(封装、继承、多态、友元)

c面相对象的三大特性为:封装、集成、多态 c 认为万事万物都皆为对象,对象上有其属性和行为 一、类和对象(封装) (一)封装的意义 封装是c面相对象的三大特性之一 封装的意义: 将属性和行为…

【应用开发一】LED开发

文章目录 1应用层控制外设的两种方式2 sysfs和/sys关系3 LED控制方式3.1 基本情况3.2 LED属性文件介绍3.3 命令行属性测试3.4 led程序3.5 开发板上测试 1应用层控制外设的两种方式 使用设备文件控制 在Linux系统下,一切皆是文件。应用层控制底层硬件同样也是通过文…

HarmonyOS开发 - 日志打印

在程序开发过程中,日志输出是不可或缺的一部分。能有效的记录和分析日志数据,使开发人员可以更好地了解程序的运行状况、解决问题、优化性能并满足合规性要求等。 当程序出现错误或异常时,日志记录输出可以帮助开发人员快速定位问题发生的位置…

Docker 从入门到精通(大全)

一、概述 1.1 基本概念 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。…

基于CRITIC-TOPSIS法的各地区评价

1.CRITIC-TOPSIS法原理 1.1 基本理论 CRITIC-TOPSIS法是一种结合CRITIC(Criteria Importance Through Intercriteria Correlation)法和TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)法的综合评价方法…

全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动顺利开展

6月21日,省教育评估院在四川邮电职业技术学院组织开展全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动。省教育评估院副院长赖长春,四川邮电职业技术学院党委副书记、校长冯远洪,四川邮电职业技术学院党委委员、副校长程德杰等出席…

【ONLYOFFICE8.1桌面编辑器】强势来袭—— 一款全面的办公软件套件

在日常工作和学习中,我们经常需要处理各种文档、表格和演示文稿。一款功能强大、易于使用的办公软件成为我们提高工作效率、便捷沟通和展示想法的得力助手。 而ONLYOFFICE 8.1桌面编辑器正是一款全面、高效的办公软件,集合了Word、PPT、Excel的功能&…

ubuntu的不同python版本的pip安装及管理

ubuntu的不同python版本的pip安装及管理_ubuntu 安装两个pip-CSDN博客https://blog.csdn.net/qq_32277533/article/details/106770850

抖音直播违规规定有哪些?(直播违禁词汇总表)

全民直播的同时也有不少新手直播玩家处处碰壁,直播间没人气,直播不知道说什么甚至直播间被封。 收到直播封禁通知的朋友,轻者封禁直播账号两三天,严重着可能永久封禁直播间! 今天我们重点来说说直播间被封是怎么回事?如何避免抖音直播间被封?抖音直播间违规规定有哪些?抖音…

[spring] Spring MVC Thymeleaf(下)

[spring] Spring MVC & Thymeleaf(下) 上篇笔记讲了一下怎么使用 thymeleaf 作为 HTML 模板,与 Spring MVC 进行沟通,这里主要说一下验证的部分 常用表单验证 一些 Spring MVC 内置的常用验证注解如下: Annota…

Redis 7.x 系列【6】数据类型之字符串(String)

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 前言2. 常用命令2.1 SET2.2 GET2.3 MSET2.4 MGET2.5 GETSET2.6 STRLEN2.7 SETEX2.8…

8.12 矢量图层面要素单一符号使用七(随机标记填充)

文章目录 前言随机标记填充(Random Marker Fill)QGis设置面符号为随机标记填充(Random Marker Fill)二次开发代码实现随机标记填充(Random Marker Fill) 总结 前言 本章介绍矢量图层线要素单一符号中使用随…

解决node: bad option: -V

出现这个问题是由于我们的不当操作造成的,v是需要小写的,看下图 node --version node -v