Java进阶学习笔记15——接口概述

认识接口:

Java提供了一个关键字Interface,用这个关键字我们可以定义一个特殊的结构:接口。

接口不能创建对象。

注意:接口不能创建对象,接口是用来被类实现(implements) 的,实现接口的类称为实现类。

一个类可以实现多个接口(接口可以理解为干爹),实现类实现多个接口,必须重写全部接口的全部抽象方法,否则实现类需要定义成抽象类。

父类只有一个,干爹能有多个。

抽象类是需要继承的,继承只能单继承,你如果继承了抽象类,那你就不能继承其他类。

java 复制代码
package cn.ensource.d7_interface;

// 实现类
public class D implements B, C{
    @Override
    public void testb1() {

    }

    @Override
    public void testb2() {

    }

    @Override
    public void testc1() {

    }

    @Override
    public void testc2() {

    }
}

接口的好处(重点)

1)弥补了类单继承的不足,一个类同时可以实现多个接口;

2)让程序员可以面向接口编程, 这样程序员就可以灵活方便地切换各种业务实现。

我们可以多创建几个方法,何必要通过接口来实现呢?

这个是特别有必要的。

其实可以理解为不是每个人都会所有人都会的,得靠具体实现的这个人到底会什么,接口就相当于这个实例化的人会的技能。

开发的时候接口是别人写的,你是调别人的,所以具体的内容不是你写的。

这样写的话,逻辑清晰,一看就看出哪里是重点,后期好维护。

使用接口可以轻松方便地新建类,而不是在已有类中修改。

implement接口可以显现地知道你是谁,能做什么?

一个接口被多个类实现,有什么好处呢?

面向接口编程。

java 复制代码
package cn.ensource.d8_interface2;

public class Test {
    public static void main(String[] args) {
        // 目标:搞清楚使用接口的好处
        Driver s = new A();
        s.drive();

        Driver d = new B();  // 程序可以面向接口进行编程
        d.drive();           // 父类类型指向子类对象 多态
    }
}

class B implements Driver{

    @Override
    public void drive() {

    }
}


class A extends Student implements Driver, Singer{

    @Override
    public void drive() {
        System.out.println("A可以driver");
    }

    @Override
    public void sing() {
        System.out.println("A可以sing");
    }
}

class Student {

}

interface Driver {
    void drive();
}

interface Singer {
    void sing();
}

接口的好处:

解决类单继承的问题,通过接口,我们可以让一个类有一个亲爹的同时,还可以找多个干爹去拓展自己的功能。

为什么我们要通过接口,也就是去找干爹,来拓展自己的功能呢?

因为通过接口去找干爹,别人通过你implements的接口,就可以显现地知道你是谁,从而也就可以放心的把你当做谁来用了。

使用接口的第二个好处是什么?

一个类我们说可以实现多个接口,同样,一个接口也可以被多个类实现的,这样做的好处是我们的程序就可以面相接口编程了,这样我们程序员就可以方便的灵活切换各种业务实现了。 而不用改后续代码了。

接口不能实例化

接口如何实现实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态。

多态的形式:具体类多态、接口类多态、接口多态。

接口的子类:

要么重写接口中的所有抽象方法。

要么子类也是抽象方法。

相关推荐
ikgy6 小时前
JAVA EE:1.计算机是如何工作的
java·java-ee
.痞老板.7 小时前
java ee--计算机是如何工作的
java·开发语言·java-ee
青梅味猪大肠7 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
CoderYanger7 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
程序员沉梦听雨7 小时前
【搜索引擎】Kibana使用指南
java·后端·学习笔记
奶油话梅糖9 小时前
打开项目 0.9 秒、内存只有 IDEA 的 1/12:OpenIDEA 用 Rust 把 IntelliJ IDEA 重造了一遍
java·rust·github·intellij-idea
vipxieliang9 小时前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
Rain的Java大神之路9 小时前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
golang学习记9 小时前
IDEA 2026.3 远程开发迎来重磅升级
java·ide·intellij-idea·远程开发
天天被压力9 小时前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python