Java中的接口

本文介绍了Java中的接口,包括接口的基本概念、特点和使用规则,以及接口与抽象类的区别。接口作为公共行为规范,用于定义标准,其方法默认为public抽象方法。一个类可以实现多个接口,接口间支持多继承。在Java 8中,接口还可以包含default方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口的基本概念

在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。

举个简单的例子我们日常生活中常见的电源插座,电脑usb接口这都是一种接口,而在使用的时候电源插座电脑usb接口只要符合它的使用标准就可以使用

即接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用

而在Java当中接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法

接口的特点和使用规则

我们在定义接口的时候将class关键字换成 interface 关键字,就定义了一个接口。

public interface 接口名称{
    // 抽象方法
    public abstract void method1();   // public abstract 是固定搭配,可以不写
    public void method2();
    abstract void method3();
    void method4();
    }

注意:

  1. 创建接口时, 接口的命名一般以大写字母 I 开头.
  2. 接口的命名一般使用 “形容词” 词性的单词.
  3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性
public interface keyboard {
    void input();
    void click();
}
 class computer implements keyboard{
    @Override
    public void input() {
        System.out.println("输入数据!");
    }
    @Override
    public void click() {
        System.out.println("敲击键盘!");
    }
}
class textone{
    public static void main(String[] args) {
        keyboard keyboard = new keyboard();

    }
}

在这里插入图片描述

  1. 接口类型是一种引用类型,但是不能直接new接口的对象
  2. 接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是public abstract,其他修饰符都会报错)
  3. . 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现
 class computer implements keyboard{
    @Override
     void input() {
        System.out.println("输入数据!");
    }
    @Override
     void click() {
        System.out.println("敲击键盘!");
    }
}

在这里插入图片描述

  1. 重写接口中方法时,不能使用默认的访问权限
public interface keyboard {
    int a=1;
    String name="键盘";
    void input();
    void click();
}
 class computer implements keyboard{
    @Override
    public void input() {
        System.out.println("输入数据!");
    }
    @Override
    public void click() {
        System.out.println("敲击键盘!");
    }
}
class textone{
    public static void main(String[] args) {
        keyboard keyboard = new computer();
        keyboard.input();
        System.out.println( keyboard.a);
    }
}
  1. 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(接口中的变量必须赋值才能使用,在调用的时候通过类名.去调用)
  2. 接口中不能有静态代码块和构造方法
  3. 接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class
  4. 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类
  5. jdk8中:接口中还可以包含default方法。

接口和抽象类的区别

核心区别: 抽象类中可以包含普通方法和普通字段, 这样的普通方法和字段可以被子类直接使用(不必重写), 而接口中不能包含普通方法,子类必须重写所有的抽象方法

在这里插入图片描述

接口的使用

public interface keyboard {
    void input();
    void click();
}
 interface moust {
    void slide();
    void affirm();
}
 class computer implements moust,keyboard{
    @Override
    public void input() {
        System.out.println("输入数据!");
    }
    @Override
    public void click() {
        System.out.println("敲击键盘!");
    }
     @Override
     public void slide() {
         System.out.println("滑动鼠标");
     }
     @Override
     public void affirm() {
         System.out.println("确认选择");
     }
 }
class textone{
    public static void main(String[] args) {
        moust moust=new computer();
        keyboard keyboard=new computer();
        moust.slide();
        moust.affirm();
        keyboard.input();
        keyboard.click();
    }
}

在这里插入图片描述

我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?但是,我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法
一个类可以实现不止一个接口
一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法
接口用来弥补类无法实现多继承的局限

接口间的继承

在Java中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。即:用接口可以达到多继承的目的

public interface keyboard {
    int a=1;
    String name="键盘";
    void input();
    void click();
}
 interface moust extends keyboard{
    void slide();
    void affirm();
}
 class computer implements moust{
    @Override
    public void input() {
        System.out.println("输入数据!");
    }
    @Override
    public void click() {
        System.out.println("敲击键盘!");
    }
     @Override
     public void slide() {
         System.out.println("滑动鼠标");
     }

     @Override
     public void affirm() {
         System.out.println("确认选择");
     }
 }
class textone{
    public static void main(String[] args) {
        moust moust=new computer();
        moust.input();
        moust.click();
        moust.affirm();
        moust.slide();
    }
}

在这里插入图片描述

.一个接口可以继承于另一个接口,或者另一些接口,接口也可以继承,并且可以多继承
接口用来弥补类无法实现多继承的局限

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值