Java基础学习系列之#接口#

简介: --------------------------------------------Java 基础的系统性复习--------------------------------------------

Java基础篇:接口

介绍

Java 中的 接口 定义为用于指定实现类行为的抽象类型,Java接口包含 静态常量抽象方法 , 1.8之后还有 默认方法静态方法 。一个类可以实现多个接口。
在Java中,接口是使用 interface 关键字声明的。在 JDK8 之前接口中的所有方法都是 隐式公开抽象 的, 1.8版本之后可以在接口中定义静态方法与使用 default 声明的带 方法体 的方法。

  • 静态常量
  • 抽象方法
  • 默认方法
  • 静态方法

使用

抽取一系列对象的公共特征, 声明方法后进行统一实现, 例如猫和老鼠都是动物, 都可以爬或者叫等等, 这个时候我们定义一个动物接口, 声明爬行和叫声的公共抽象方法, 创建猫和老鼠的类进行实现动物接口

优点: 当增加一个公共抽象方法, 例如在动物接口中增加 毛色 方法, 这样我们不用去用脑去记忆有多少动物实现了它, 因为编译的时候会报错误, 很清晰的给动物实现类增加方法, 而无需去担心漏掉某个动物没有毛色

代码实现:

interface Animal {
    public void move();
}

class Cat implements Animal {
    public void move(){
        System.out.println("猫行走的方法...");
    }    
}

class Dog implements Animal {
    public void move(){
        System.out.println("狗行走的方法...");
    }    
}

给动物增加一个毛色

interface Animal {
    // ...其他方法
    public void color();
}

这个时候如果CatDog类如果不重写color方法的话,就会编译报错

新特性::默认方法

以前的接口向后兼容性不好, 例如我想在动物类中增加一个如何食用该动物, 那么总不能每个动物都要实现吧, 所以就需要这种可以不实现这个方法

interface Animal {
    default void howToEat(){
        System.out.println("Animal:实现了这个接口的类可以不实现这个方法");
    }
}   

那么问题来了, 假如有一个兔子类, 在实现了Animal的同时又实现了Mammal(哺乳动物), 而两个接口中都包含howToEat方法

interface Mammal {
    default void howToEat(){
        // 实现了这个接口的类可以不实现这个方法
        System.out.println("Mammal:哺乳动物食用方法...");
    }
}
public class Rabbit implements Animal, Mammal{

}  

上述代码编译出错, 如下:

错误信息

这个时候我们就要重写howToEat方法了

public class Rabbit implements Animal, Mammal {
    @Override
    public void howToEat() {
        System.out.println("麻辣兔头");
    }
}

新特性::静态方法

假如我想获取哺乳动物的腿的数量, 我又不想去调取其实现类, 或者每个实现类写其有几条腿或者爪子什么之类的

public interface Mammal {
    static int getLegByName(String name) {
        switch (name) {
            case "兔子":
                return 4;
            case "鸭子":
                return 2;
            default:
                return 0;
        }
    }
}    

总结

总结:

  • 接口固定了实现类对指定方法的实现特征
  • jdk8新特性, 可以在接口中定义静态方法与默认方法
相关文章
|
6天前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
27 7
|
6天前
|
前端开发 JavaScript Java
【前端学java】Java中的接口和枚举概念(8)
【8月更文挑战第9天】Java中的接口和枚举概念(8)
23 4
|
3天前
|
前端开发 Java 编译器
【前端学java】如何从前端视角快速学习Maven
【8月更文挑战第12天】如何从前端视角快速学习Maven
11 2
【前端学java】如何从前端视角快速学习Maven
|
4天前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
11天前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
38 8
|
10天前
|
数据采集 Java API
java接口防爬虫
8月更文挑战第9天
|
11天前
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
47 6
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(中)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
51 5
|
11天前
|
Java 关系型数据库 程序员
11 Java接口(语法、规范、微观&宏观接口)
11 Java接口(语法、规范、微观&宏观接口)
31 6
|
11天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(上)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
42 3