万字详解java接口上

简介: 万字详解java接口上

一、初始接口

1.1 什么是接口?

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。
在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
在这里插入图片描述

1.2 接口定义规则

Interface关键字用来声明一个接口。

interface 接口名称 {
        // 声明变量
        // 抽象方法
}

代码如下(示例):

interface IInterface {
    //任何类型为 public static final 字段
    //任何类型位 public abstract 方法
}
1.接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
2.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
3.接口中的方法都是公有的。
4.接口中的方法和属性不要加任何修饰符号,保持代码简洁性.

二、接口的使用

接口不能直接使用,必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法。
定义一个Animal接口:

//定义Animal接口
interface Animal {
    void eat();
}

子类和父类之间是extends 继承关系,类与接口之间是 implements 实现关系。

class Dog implements Animal {

    @Override
    public void eat() {
        System.out.println("吃狗粮!");
    }
}
class Cat implements Animal {

    @Override
    public void eat() {
        System.out.println("吃猫粮!");
    }
}

测试一下接口是否支持多态:

public static void func(Animal animal) {
        animal.eat();
    }
    public static void main(String[] args) {
        func(new Dog());
        func(new Cat());
    }

在这里插入图片描述

二、接口的特性

1.接口类型是一种引用类型,但是不能直接new接口的对象

public static void main(String[] args) {
        Animal animal = new Animal();
    }

在这里插入图片描述
2.接口中的每一个方法都是隐式指定为public abstract,如果设定为其他修饰符都会报错

interface IInterface {
    protected void func();
}

在这里插入图片描述
3.接口中的方法不能有具体的实现

interface Animal {
    void eat(){
        System.out.println("吃饭!");
    }
}

在这里插入图片描述
4.重写接口方法时只能使用public访问限权修饰

class Dog implements Animal {

    @Override
     void eat() {
        System.out.println("吃狗粮!");
    }
}

在这里插入图片描述
5.接口中的变量默认为public static final变量

interface Animal {
    int age = 18;
    void eat();
}
public static void main(String[] args) {
        System.out.println(Animal.age);//可以用接口名访问,证明是静态的
        Animal.age = 20;//无法修改,说明被final修饰
    }

在这里插入图片描述
6.接口中不能有静态代码块和构造方法
在这里插入图片描述
在这里插入图片描述7.接口虽然不是类,但是在编译后生成的字节码文件后缀也是.class
在这里插入图片描述
8.如何一个类没有实现接口中的所有抽象方法,该类必须设置为抽象类.
在这里插入图片描述
在这里插入图片描述
9.JDK1.8中,接口中可以包含default方法.
在这里插入图片描述
10.接口间的继承
在Java中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。即:用接口可以达到多继承的目的。
接口可以继承一个接口, 达到复用的效果. 使用 extends 关键字.

interface IRunning {
    void running();
}
interface ISwimming {
    void swimming();
}
//两栖动物,既有跑,又有游的功能
interface IAmphibious extends IRunning,ISwimming {
    
}

接口间的继承相当于把多个接口合并在一起.

目录
相关文章
|
9天前
|
存储 Java 编译器
Java中的抽象类与接口,在阿里工作5年了
Java中的抽象类与接口,在阿里工作5年了
|
3天前
|
Java
Java接口
Java接口
11 0
|
6天前
|
安全 Java 编译器
Java一分钟之——泛型方法与泛型接口
【5月更文挑战第20天】Java泛型提供编译时类型安全检查,提升代码重用和灵活性。本文探讨泛型方法和接口的核心概念、常见问题和避免策略。泛型方法允许处理多种数据类型,而泛型接口需在实现时指定具体类型。注意类型擦除、误用原始类型和泛型边界的理解。通过明确指定类型参数、利用通配符和理解类型擦除来避免问题。泛型接口要精确指定类型参数,适度约束,利用默认方法。示例代码展示了泛型方法和接口的使用。
32 1
Java一分钟之——泛型方法与泛型接口
|
11天前
|
Java 开发者
Java一分钟之-Lambda表达式与函数式接口
【5月更文挑战第12天】Java 8引入的Lambda表达式简化了函数式编程,与函数式接口结合,实现了代码高效编写。本文介绍了Lambda的基本语法,如参数列表、箭头符号和函数体,并展示了如何使用Lambda实现`Runnable`接口。函数式接口仅有一个抽象方法,可与Lambda搭配使用。`@FunctionalInterface`注解用于确保接口具有单一抽象方法。文章还讨论了常见的问题和易错点,如非函数式接口、类型冲突以及Lambda表达式的局部变量可见性,并提供了避免这些问题的策略。通过理解Lambda和函数式接口,开发者能提高代码可读性和效率。
47 4
|
1天前
|
设计模式 算法 Java
Java语言中的接口技术深入解析
Java语言中的接口技术深入解析
|
2天前
|
Java
Java 接口(Interface)
Java接口是抽象类型,定义方法规范而无实现。接口通过`interface`关键字定义,包含方法签名和常量。类可实现多个接口,实现接口必须覆盖所有方法。接口常用于多态、回调和模块化。一个类可继承一个抽象类并实现多个接口。接口中的常量默认为`public static final`。注意接口不能实例化,且多个接口同名方法可通过实现类重写避免冲突。接口继承多个接口时,规范冲突则不允许。
10 0
|
2天前
|
Java
java面试基础 -- 普通类 & 抽象类 & 接口
java面试基础 -- 普通类 & 抽象类 & 接口
9 0
|
2天前
|
人工智能 Java 编译器
Java接口详解
Java接口详解
6 0
|
3天前
|
存储 Java
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
|
3天前
|
Java 索引
【JAVA学习之路 | 进阶篇】List接口常用方法
【JAVA学习之路 | 进阶篇】List接口常用方法