Java 接口

news/2024/7/14 5:40:18

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

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子类限制一个子类只能继承一个抽象类一个子类可以实现多个接口

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

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

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

相关文章

【算法训练记录——Day32】

Day32——贪心算法Ⅱ 1.leetcode122买卖股票的最佳时机II2.leetcode55跳跃游戏3.leetcode45跳跃游戏II4.eetcode1005K次取反后最大化的数组和 目标: leetcode122买卖股票的最佳时机IIleetcode55跳跃游戏leetcode45跳跃游戏IIleetcode1005K次取反后最大化的数组和 1…

高效、智能、安全:小型机房EasyCVR+AI视频综合监控解决方案

一、背景需求分析 随着信息技术的迅猛发展,小型机房在企事业单位中扮演着越来越重要的角色。为了确保机房的安全稳定运行,远程监控成为了必不可少的手段。 二、视频监控 视频监控是机房远程监控的重要组成部分。通过安装IP摄像机及部署视频监控系统Ea…

Unity3d 游戏暂停(timeScale=0)引起的deltaTime关联的系列问题解决

问题描述 游戏暂停的功能是通过设置timeScale0实现的,不过在暂停游戏的时候,需要对角色进行预览和设置,为了实现这个功能,是通过鼠标控制相机的操作,为了使相机的操作丝滑,获取鼠标操作系数乘以Time.delta…

人工智能--搭建人工神经网络

欢迎来到 Papicatch的博客 文章目录 🍉引言 🍉神经元与感知器 🍈神经元(Neuron) 🍈感知器 🍉损失函数与梯度下降算法 🍈损失函数 🍈梯度下降算法 🍉…

小熊文件工具箱免费版

小熊文件工具箱是一款基于本地离线操作的一系列工具的合集,最大特点是各种批量任务的执行,包含了智能证件照,自动抠图,直播录制,九宫格切图,拼图,视频格式转换及压缩,zip压缩解压缩&…

PPT: Pre-trained Prompt Tuning for Few-shot Learning

文章汇总 当前的问题 当前的学者(a)、(b)、©都是通过微调模型(encoder/decoder)来适应下游任务。尽管效果很好,但是一方面代价很大,一方面在小样本设置下,微调模型这种做法性能差得多。本文的想法:通过一些预训练任务仅冻结…