浅谈Java当中的接口

本文介绍了Java中的接口概念,包括接口的定义、使用方式(如何定义接口、如何实现接口以及多接口实现),并阐述了接口在提高代码复用性和隐藏实现细节方面的优点。
摘要由CSDN通过智能技术生成

接口

        关于接口,可以理解为是一种公共的行为规范在具体实现时,只要符合规范标准,就可以通用。比如:叫做“IRunning”(跑)的接口,只要某个类在实现时符合这个接口内的行为规范(接口内的方法),就可以使用这个接口。

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

1、接口的定义

   定义接口的关键字:interface

   接口的定义与类的定义基本相同,就是将class关键字换为interface关键字

//定义一个名为“IRunning”的接口
public interface IRunning {
   
}

注意事项:1、创建接口时,接口的命名一般以大写字母I开头

                   2、接口的命名一般使用“形容词”词性的单词

2、接口的使用

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

         “实现类”连接接口时使用的关键字是:implements

定义一个名为“IRunning”的接口:

public interface IRunning {
    void iRunning();
}

注意:1、接口当中的方法默认是使用 public abstract  来修饰的,如上述例子所示,无论你在接口中写方法时写或不写 public abstract ,该方法都是抽象方法,所以接口当中的方法不能有具体的实现

         2、接口当中的成员变量默认 public static final 修饰,定义的时候必须初始化,但是可以省略不写

           2、但是接口当中有default修饰的方法和static修饰的方法是可以有具体的实现的(由于咱们一般用不上这样的方法,所以此处咱们就不做介绍,此处初学者也可暂时忽略)

写一个“Cat1”类连接“IRunning”接口

public class Cat1  implements IRunning{
    private String name;

    public Cat1(String name) {
        this.name = name;
    }

    
    //重写接口“IRunning”当中的抽象方法
    @Override
    public void iRunning() {
        System.out.println(this.name+"正在跑步");
    }

}

 注意:当一个实现了一个接口时,那么这个类就要重写实现的接口里的所有的抽象方法

            (由于我这里只是举例,所以我的接口只写了一个抽象方法(接口当中可以写一个或多个抽象方法),所以我的“实现类里也只重写了一个抽象方法,大家在实际的应用中要根据具体情况来运用)

            如果该类没有实现该接口所有的抽象方法,那么该类必须设置为抽象类

定义一个测试类“Test”来观察效果

public class Test1 {
    public static void main(String[] args) {
        Cat1 cat1=new Cat1("小猫");
        cat1.iRunning();
    }
}

运行结果

3、一个类可以实现多个接口

定义一个名为“IRunning”的接口:

public interface IRunning {
    void iRunning();
}

定义一个名为“ISwimming”的接口:

public interface ISwimming {
    void iSwimming();
}

定义一个名为“IFlying”的接口:

public interface IFlying {
    void iFlying();
}

定义一个名为“Duck”的类:

public class Duck  implements IRunning,ISwimming,IFlying{
    private String name;

    public Cat1(String name) {
        this.name = name;
    }


    //重写接口“IFlying”当中的抽象方法
    @Override
    public void iFlying() {
        System.out.println(this.name+"正在飞");
    }

    //重写接口“IRunning”当中的抽象方法
    @Override
    public void iRunning() {
        System.out.println(this.name+"正在跑");
    }

    //重写接口“Iswimming”当中的抽象方法
    @Override
    public void iSwimming() {
        System.out.println(this.name+"正在游泳");
    }
}

注意:当一个类实现多个接口时,该类要重写所有接口当中所有的抽象方法

4、关于使用接口的优点

       1、使用接口能够让类的调用者不需要关心类的具体类型,而只去关注这个类是否具有某种能力。

        比如咱们上面定义的”IRunning“、“ISwimming”、“IFlying”三个接口,作为写程序的人(我)的本意是这三个接口分别有“跑”“游泳”“飞”的功能,所以当一个普通类具有这些功能的时候就可以去实现在三个接口,如后面写的名为“Duck”(鸭子)的类,该类具有这些功能,所以就可以去实现这三个类(其实也可以定义一个机器人的类去实现跑的这个接口,因为机器人也具有这种功能),所以说使用接口时我们不用去关心类的具体类型,而去关心类具有什么功能即可

        2、类和类之间是单继承的,但一个类可以继承多个接口,可以提高代码的复用性

关于接口我就浅谈到这里,希望能帮助到刚开始接触接口这个知识点的小伙伴们!

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值