java interface override(java中interface的用法)

来源:网络技术联盟站 

链接:https://www.wljslmz.cn/19657.html

接口是java中的核心概念之一,Java 接口是 Java 编程语言的核心部分,不仅在 JDK 中而且在Java 设计模式中也被广泛使用,大多数框架大量使用java接口。

那么什么是接口?为啥需要使用接口?接口应该怎么使用?本文一一给大家介绍。

一、什么是接口?

在 Java 中,接口是一种抽象类型,包含方法和常量变量的集合,它是Java中的核心概念之一,用于实现抽象、多态和多重继承。

java interface override(java中interface的用法)

Java 接口是方法名称的集合,只是名称,没有函数体,这些函数是作为接口定义的工作的一部分执行的。

例如,如果我们有一个动物类,动物可能会有许多不同的动作,一个类可以实现任意数量的接口。

二、为啥需要使用接口?

  • 数据抽象
  • 实现多重继承
  • 允许不同的对象轻松交互
  • 促进软件的重用

这里我们可以举个例子给大家说明一些下,为啥我们需要接口。

如果你有个需求,猫咪要集成动物类和宠物类:

java interface override(java中interface的用法)

但是Java是不支持多集成的,所以这个时候你应该怎么办?

那肯定是使用接口去实现,猫咪可以继承动物类,实现宠物类。

java interface override(java中interface的用法)

我们用代码的形式简单去实现一下。

首先写一个Pet接口:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 6:39
 * @description: 宠物接口
 */
public interface Pet {

    /**
     * 奔跑方法
     */
    void run();
}

然后写一个猫咪的类去实现Pet接口:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 6:41
 * @description:
 */
public class Cat implements Pet{

    @Override
    public void run() {
        System.out.println(\\\"我是猫咪,我实现了Pet接口,并重写了run方法。\\\");
    }

    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.run();
    }
}

运行结果:

我是猫咪,我实现了Pet接口,并重写了run方法。
java interface override(java中interface的用法)

这就是接口的写法。

三、接口有哪些规则?

接口在使用过程中,有很多规则,我们必要要牢记,下面列举几个:

  1. 不能直接实例化接口,需要写具体的类去实现它。
  2. 接口可以为空,可以没有方法或变量。
  3. 接口中不能出现final关键字。
  4. 接口不能有构造函数,因为我们不能实例化它们,而且接口不能有带主体的方法.
  5. 实现接口的类必须为其所有方法提供实现,除非它是抽象类。

四、接口的优缺点

4.1 优点

  • 接口可以帮助我们实现抽象。
  • Java中不允许多继承,但是可以实现多个接口。
  • 接口可以实现松耦合,一个类的变化不会影响其他类。

4.2 缺点

  • 一个接口可以有多个实现类,所以但凡开始设计这个接口没有设计好,后期想要修改的时候,那么实现这个接口的所有类也要跟着修改。

五、接口中其他重要点

5.1 默认方法

随着 Java 8 的发布,我们现在可以在接口内添加带有实现的方法,这些方法称为默认方法。

要在接口中声明默认方法,我们使用default关键字,例如:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 6:39
 * @description: 宠物接口
 */
public interface Pet {

    /**
     * 奔跑方法
     */
    void run();

    /**
     * 默认方法
     */
    default void getAction(){
        System.out.println(\\\"接口的默认方法\\\");
    }
}

有没有疑问,为啥要引入默认方法?

如果我们需要在接口中添加一个新方法,可以在接口中添加方法而无需实现,但是这个不太现实,因为你一旦在接口中定义了一个新的方法,那么所有实现这个接口的实现类必须要重写这个新的方法,这肯定不是我们想要的结果

为了解决这个问题,Java 引入了默认方法,默认方法像普通方法一样被继承。

我们用代码的形式给大家演示一下:

接口Pet:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 6:39
 * @description: 宠物接口
 */
public interface Pet {

    /**
     * 奔跑方法
     */
    void run();

    /**
     * 默认方法
     */
    default void dance(){
        System.out.println(\\\"我会跳舞\\\");
    }
}

实现类1-猫咪:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 6:41
 * @description:
 */
public class Cat implements Pet{

    @Override
    public void run() {
        System.out.println(\\\"我是猫咪,我实现了Pet接口,并重写了run方法。\\\");
    }

    @Override
    public void dance() {
        System.out.println(\\\"我是猫咪,我实现了Pet的默认方法,我会跳舞\\\");
    }
}

实现类2-狗狗:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 7:05
 * @description:
 */
public class Dog implements Pet{

    @Override
    public void run() {
        System.out.println(\\\"我是狗狗,我实现了Pet接口,并重写了run方法。\\\");
    }
}

测试类:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 7:07
 * @description:
 */
public class Test {

    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.run();
        cat.dance();

        Dog dog = new Dog();
        dog.run();
    }
}

输出:

我是猫咪,我实现了Pet接口,并重写了run方法。
我是猫咪,我实现了Pet的默认方法,我会跳舞
我是狗狗,我实现了Pet接口,并重写了run方法。
java interface override(java中interface的用法)

我们注意到猫咪类有实现Pet接口中的默认方法dance(),但是狗狗类没有实现该方法,这个就体现了灵活性,默认方法只是其中一个或者多个实现类需要用到。

5.2 静态方法

Java 8中还引入了静态方法,所谓静态方法,就是用关键字 static 定义的方法。与 Interface 中的其他方法不同,这些静态方法包含函数的完整定义,并且由于定义完整且方法是静态的,因此这些方法在实现类中不能被覆盖或更改。

接口中的静态方法可以在接口中定义,但不需要在实现类中重写。

我们直接上代码:

Pet接口:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 6:39
 * @description: 宠物接口
 */
public interface Pet {

    /**
     * 静态方法
     */
    static void eat(){
        System.out.println(\\\"我是静态方法!\\\");
    }
}

Cat实现类:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 6:41
 * @description:
 */
public class Cat implements Pet{
}

Test测试类:

package com.wangrui.kmz.test;

/**
 * @author: wangrui
 * @date: 2022/9/30 7:07
 * @description:
 */
public class Test {

    public static void main(String[] args) {
        Pet.eat();
    }
}

输出:

我是静态方法!

六、总结

接口是java中非常重要也是很常用的,本文介绍了接口的定义、优缺点、使用,还有java8新引入的概念:默认方法、静态方法,希望本文对您学习接口有所帮助,有任何问题,欢迎在下方评论区与我讨论。


java interface override(java中interface的用法)

原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/34754.html

(0)
网络技术联盟站's avatar网络技术联盟站
上一篇 2024年4月17日 下午1:26
下一篇 2024年4月17日 下午1:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注