首页 > 编程语言 >Java 接口

Java 接口

时间:2024-06-22 14:32:31浏览次数:10  
标签:Java USB void 接口 println 抽象类 public

本篇学习接口,并区分接口与抽象类两者之间的异同点。上篇已经讲解了抽象类,有需要的小伙伴可以点链接康康

https://blog.csdn.net/m0_73107796/article/details/139863674


目录

1、 什么是接口

2、 接口定义格式

3、 接口的使用

 4、接口特性

5、抽象类与接口的区别 


1、 什么是接口

我们知道,Java不支持多重继承(一个类不支持继承多个类),但是,通过接口实现了比多重继承更强的功能。Java通过接口便处于不同层次的类甚至互不相关的类可以具有相同的行为·

2、 接口定义格式

语法如下:

 public interface 接口名称 {
      // 抽象方法
      public abstract void method1(); // public abstract 是固定搭配,可以不写
      public void method2();
      abstract void method3();
      void method4();
          // 注意:在接口中上述写法都是抽象方法,更推荐方式4,代码更简洁
 }

小提示:
1. 创建接口时, 接口的命名一般以大写字母 I 开头.
2. 接口的命名一般使用 "形容词" 词性的单词.
3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性.

3、 接口的使用

接口不能直接使用,必须要一个“实现类”来实现“该接口”,并实现接口中的所有抽象方法。

public class 类名称 implements 接口名称 {

        成员变量;

        抽象方法;

}

 注意:子类和父类之间是extends 继承关系,类与接口之间是 implements 实现关系。

现在来看看代码加强理解八

用笔记本电脑使用USB鼠标、USB键盘的例子:
1. USB接口:包含打开设备、关闭设备功能
2. 笔记本类:包含开机功能、关机功能、使用USB设备功能
3. 鼠标类:实现USB接口,并具备点击功能
4. 键盘类:实现USB接口,并具备输入功能

//定义USB接口
public interface USB {
    void openDevice();
    void closeDevice();
}
//鼠标类实现接口
public class Mouse implements USB{

    @Override
    public void openDevice() {
        System.out.println("开启鼠标");
    }

    @Override
    public void closeDevice() {
        System.out.println("关闭鼠标");
    }
    public void click(){
        System.out.println("点击鼠标");
    }
}
//键盘类实现接口
public class KeyBoard implements USB{

    @Override
    public void openDevice() {
        System.out.println("打开键盘");
    }

    @Override
    public void closeDevice() {
        System.out.println("关闭键盘");
    }
    public void input(){
        System.out.println("敲键盘");
    }
}
//定义计算机类,使用USB接口
public class Computer {
    public void powerOn(){
        System.out.println("打开计算机");
    }
    public void  powOff(){
        System.out.println("关闭计算机");
    }
    public void useDevice(USB usb){
        usb.openDevice();
        if(usb instanceof Mouse) {
            Mouse mouse = (Mouse) usb;
            mouse.click();
        }
            else if(usb instanceof KeyBoard){
                KeyBoard keyBoard=(KeyBoard) usb;
            keyBoard.input();
        }
            usb.closeDevice();
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        Computer computer =new Computer();
        computer.powerOn();

        //使用鼠标设备
        computer.useDevice(new Mouse());

        //使用键盘设备
        computer.useDevice(new KeyBoard());

        computer.powOff();
    }
}

代码运行结果图

 4、接口特性

1. 接口类型是一种引用类型,但是不能直接new接口的对象。(接口比抽象类还抽象哦,不能实例化对象

2.接口默认所有方法的修饰为 public abstract(只能是public abstract)

5. 接口默认所有属性的修饰是 public static final 

3. 接口中的方法是一般不在接口中实现的,要能由实现接口的类来实现,若要在接口中实现,需要在方法前加default或Static(不建议).

4. 重写接口中方法时,不能使用默认的访问权限

6.接口中不能有静态代码块和构造方法

7.接口中不能有普通方法.

8. 一个接口对应一个字节码文件,编译完成后字节码文件的后缀格式是.class

9. 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类 

10、接口间的继承用extends,接口可以达到多继承的目的

5、抽象类与接口的区别 

抽象类和接口都是 Java 中多态的常见使用方式. 都需要重点掌握. 同时又要认清两者的区别(重要!!! 常见面试题).
核心区别: 抽象类中可以包含普通方法和普通字段, 这样的普通方法和字段可以被子类直接使用(不必重写), 而接口中不能包含普通方法, 子类必须重写所有的抽象方法.

继承表达的含义是 is-a语义,而接口表达的是有XXX特性。

抽象类与接口的区别
No区别抽象类(abstract)接口(interface)
1结构组成抽象类+抽象方法抽象方法+全局变量
2权限各种权限public
3子类使用使用extends关键字继承抽象类用implements关键字实现接口
4关系一个抽象类可以实现若干个接口接口不能继承抽象类,但是可以用extends实现多个父类接口
5子类限制一个子类只能继承一个抽象类一个子类可以实现多个接口

 本篇类的接口和抽象类与接口区别学习到这里是不是收获满满呢,如果觉得文章写的不错,留下小红心再走吧。后面一篇学习做图书管理系统!关注我,不要错过哦!~ 

标签:Java,USB,void,接口,println,抽象类,public
From: https://blog.csdn.net/m0_73107796/article/details/139866229

相关文章

  • DVWA 靶场 JavaScript 通关解析
    前言DVWA代表DamnVulnerableWebApplication,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。DVWA提供了一系列的漏洞场景和练习环境,用户可以通过......
  • .Net开发 ,Java开发 ,python开发 数据库开发,开发相关工具
    开发电脑安装相关工具软件Java开发Java编程、高级编程、面试题资料Python编程,网络编程,爬虫,面试,设计资料数据库mysql,sqlservice,sql优化资料C#语言、.Net开发、.Net高级编程资料......
  • Java 8 Stream
    Java8StreamJava8新特性Java8新特性Java8API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。StreamAPI可以极大提高Java程序员的生产力,......
  • java多线程编程问题以及解决办法
    java多线程编程问题以及解决办法  多线程编程虽然可以提高程序的性能和响应速度,但也带来了许多复杂的问题,如竞态条件、死锁、线程安全问题、内存一致性错误等。常用的解决方法包括使用同步机制(如synchronized和ReentrantLock)、线程池、volatile关键字、以及合适的线程间......
  • 【JavaScript脚本宇宙】终极对决:六大虚拟DOM库横评
    深度剖析:六大虚拟DOM库的奥秘与应用场景前言虚拟DOM(DocumentObjectModel)是用于表示和操作HTML文档的抽象数据结构。虚拟DOM库是构建用户界面的重要工具,它们提供了高效的更新机制、组件化开发等功能,使开发者能够轻松地开发高性能、可维护的Web应用程序。本文将介绍几个流......
  • 基于javaweb房产中介房屋租赁系统设计与实现
      博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书......
  • Java计算机毕业设计博物馆管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,传统博物馆的管理模式已经难以适应现代社会的需求。博物馆作为重要的文化传承和展示机构,需要更加高效、智能的管理系统来支撑......
  • java毕业设计之在线考试系统(springboot完整源码+说明文档+演示视频)
    1项目介绍本系统主要包括管理员和用户两个角色组成;主要包括首页、个人中心、用户管理、教师管理、课程信息管理、班级信息管理、试题管理、在线试题管理、考试管理等功能的管理系统。2、项目技术项目后端框架:Java+ssm项目前端框架:vue2,ssm3、开发环境springboot环境......
  • 分享:Javascript开源桌面环境-Puter
    Puter这是一个运行在浏览器里的桌面操作系统,提供了笔记本、代码编辑器、终端、画图、相机、录音等应用和一些小游戏。该项目作者出于性能方面的考虑没有选择Vue和React技术栈,而是采用的JavaScript和jQuery构建,支持Docker一键部署和在线使用。 简介:Puter是一......
  • 阶段一:Java基础进阶期末题型
    目录前言第一题第二题第三题第四题第五题第六题前言java基础进阶结课期末题第一题需求某小型商城系统的订单信息在素材下的orders.xml文件中,现在要求把xm!中的订单信息,封装成一个一个的订单对象,将订单对象保存到ArrayList集合中。具体功能点要求1)定义订单类......