Java——接口

目录

一、接口的概念

二、语法规则

三、接口使用

四、实现多个接口

五、抽象类和接口的区别


一、接口的概念

        在生活中接口的例子比比皆是,下面便是一些接口

        这些接口根据他们的形状和功能的不同,可以接入不同的设备。例如笔记本上的USB口可以插鼠标、U盘、键盘等符合USB接口协议的设备,通过这个例子可以看出,接口是公共的行为规范,只要符合规范标准,就可以通用。

        在java中接口可以看成是多个类的公共规范,是一种引用数据类型。定义的是一组规则.

二、语法规则

        接口的定义格式与定义类的格式基本相同,将class关键字换成 interface 关键字,就算定义了一个接口。

        接口当中的成员方法,不能有具体的实现,它里面是抽象方法:默认是public abstract的方法,要是想定义一个可以实现的方法需使用default来修饰,接口中可以实现静态方法,接口内部的成员变量默认是 public static final修饰

        接口中的所有的定义其实都是抽象的。

public interface IShape {
    public static final int a = 1;
    int b= 2;
    public abstract void func1();
    default public void func2(){
        System.out.println("这是一个默认方法");
    }
    public static void func3(){
        System.out.println("这是一个静态方法");
    }
    void func4();
}

接口命名:

        1. 创建接口时, 接口的命名一般以大写字母 I 开头;

        2. 接口的命名一般使用 "形容词" 词性的单词;

        3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性。

三、接口使用

        接口不能被实例化,必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法。可以通过class 类名 implement 接口名来使用接口

public class Test implements IShape{
    @Override
    public void func1() {
        //该方法必须重写
    }

    @Override
    public void func2() {
        //该方法可以选择是否重写
    }
}

        其中抽象方法必须重写,而被default修饰的方法可以不重写。

接口特性:

1、接口是引用数据类型,但是它不能直接new接口对象,但是可new实现它的类

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 class Test {
    public static void main(String[] args) {
        USB usb = new Mouse();
    }
}

  2、接口中的所有的定义其实都是抽象的,其内部定义的所有方法会被隐式的指定为public abstract.

3、接口内定义的方法不能实际实现,只能由实现接口的类来实现,接口实际上可以看作定义了一组规则。

4、因为接口内方法默认权限为public,所以在实现接口时重写方法不能使用默认访问权限。

5、接口中可以含有变量,但是接口中变量会被指定为public static final变量

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

7、接口虽然不是类,但是其编译完成的字节码文件也是.class

8、如果类没有实现接口中的全部抽象方法,则该类必须设置为抽象类。

四、实现多个接口

        在Java中虽然不支持多继承,但是我们可以用一个类实现多个接口

public class Animal {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public interface Fly {
    void flying();
}
public interface Run {
    void running();
}
public class Cat extends Animal implements Run{

    //继承Animal类,实现Run接口
    @Override
    public void running() {
        System.out.println(getName()+"正在地上跑");
    }
}
public class Polatouche extends Animal implements Fly,Run{

   
    @Override
    public void flying() {
        //实现Fly接口
        System.out.println(getName() + "向主人的手飞去");
    }

    @Override
    public void running() {
        //实现Run接口
        System.out.println(getName() + "在地上爬来爬去");
    }
}
public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.setName("小猫");
        Polatouche polatouche = new Polatouche();
        polatouche.setName("飞鼠");
        cat.running();
        polatouche.flying();
        polatouche.running();
    }
}

        在使用一个类实现多个接口时,应将每个接口的抽象方法全部实现,否则需要把该类设置为抽象类,同时在实现多个接口的同时,还可以继承一个父类。

        继承表达的含义is-a,

        接口表示的含义是具有xxx特性。

        有了接口后,我们使用类时就不必去关注具体类型,只需要去关注某个类是否具备某种能力。

接口间的继承

        在Java中接口之间是可以继承,而且相对于类与类之间的单继承,接口是可以进行多继承的,我们可以使用接口来达到多继承的目的,接口之间继承就相当于把多个接口合并在一起

public interface Swim {
    void swimming();
}
public interface Amphibious extends Run,Swim{

}

五、抽象类和接口的区别

        抽象类和接口都是Java中多态的常见使用方式,

        其中抽象类中可以包含普通方法,普通字段,而接口中不能包含普通方法,子类必须重写所有的抽象方法。

        抽象方法的存在是为了让编译器更好的校验。抽象类可以有各种权限,而接口只有public权限

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TISNIW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值