06.java面向对象高级-接口

06.java面向对象高级-接口

1. 接口介绍

​ 当我们谈论接口时,可以将其比喻为一份合同或规范,它规定了一个类应该遵守的一组规则和行为。接口定义了类应该具备的方法,并且不提供这些方法的具体实现,只规定了方法名和参数。这些方法是类必须实现的,就像合同中的规定一样。

​ 想象一下,接口就像一张清单,列出了一些任务和要求。当一个类承诺实现某个接口时,它就必须完成这份清单上的所有任务,也就是实现接口中定义的所有方法。

​ 接下来我们完成一个入门案例:

/**
 * 写一个接口
 **/
public interface UsbInterface {//接口
    //规定接口的相关方法
    public void start();
    public void stop();
}

​ 写两个类实现接口

/**
 * Phone实现 UsbInterface
 **/
//1. Phone类实现 USBInterface接口 规定/声明的方法
public class Phone implements UsbInterface {
    @Override
    public void start() {
        System.out.println("手机开始工作。。。");
    }

    @Override
    public void stop() {
        System.out.println("手机停止工作。。。");
    }
}
/**
 * Camaro 实现接口
 **/
public class Camera implements UsbInterface {
    @Override
    public void start() {
        System.out.println("相机开始工作。。。");
    }

    @Override
    public void stop() {
        System.out.println("相机停止工作。。。");
    }
}

​ 写一个电脑类,编写work()方法

public class Computer {
    //编写一个方法
    public void work(UsbInterface usbInterface) {
        //通过接口来调用方法
        usbInterface.start();
        usbInterface.stop();
    }
}

​ 然后让我们开始测试

public class Interface01 {
    public static void main(String[] args) {
        Camera camera = new Camera();
        Phone phone = new Phone();
        //创建计算机
        Computer computer = new Computer();
        computer.work(phone);//把手机接入电脑
        System.out.println("=====================");
        computer.work(camera);//把相机接入电脑
    }
}

​ 通过这个入门案例我们可以清晰的了解接口的使用

2. 基本介绍

1. 描述
  1. 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况吧这些方法写出来

  2. 语法:

    interface 接口名 {
    //属性
    //方法
    }

    class 类名 implements 接口 {
    自己的属性;
    自己的方法;
    必须实现的接口方法;
    }

2. 补充:
  1. 在jdk7.0前 接口里的所有方法都没有方法体,即都是抽象方法
  2. jdk8.0后 接口类可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现(默认方法的实现,需要用default关键字修饰)
package com.yzjedu.interface_;

/**
 * 接口补充
 **/
public class Interface02 {
    public static void main(String[] args) {

    }
}
//1. 如果一个类 implements实现接口
//2. 需要将该接口中所有的抽象方法都要实现
class A implements AInterface {
    @Override
    public void hi() {
        System.out.println("hi....");
    }
}
interface AInterface {
    //写属性
    public int n1 = 10;
    //写方法
    //在接口中,抽象方法可以省略abstract关键字
    public void hi();
    //在jdk8后,可以有默认的实现方法,需要使用default关键字修饰
    default public void ok() {
        System.out.println("ok....");
    }
    //jdk8中可以有静态方法
    public static void ha() {
        System.out.println("ha...");
    }
}

3. 接口的应用场景

​ 让我们用一个生活中的例子来说明为什么要使用接口而不直接写类

​ 想象一下你正在建造一个房子,你需要用到不同类型的工人:木工、电工、水管工等。每个工人都有自己的专业领域和工作方式,但他们都有一个共同的任务:建造房子。

​ 如果你直接写类来表示这些工人,可能会有以下问题:

问题:
  1. 类的层次结构复杂:你需要为每一种工人类型创建一个类,这会导致类的层次结构变得复杂,尤其当你有多种不同类型的工人时。
  2. 难以扩展:如果你需要添加新类型的工人,你需要创建一个新的类,并可能需要修改现有的代码。
  3. 不符合规范:每个工人都应该有一些共同的行为,比如开始工作、结束工作等。如果你直接在每个类中实现这些行为,可能会导致不一致性和混乱。

这时候,接口就派上用场了。你可以创建一个名为"Worker"的接口,其中包含所有工人都应该实现的方法,比如"startWork()“和"endWork()”。然后,每种工人类型只需实现这个接口,并提供自己的具体实现,而不必创建独立的类。

​ 这样做的好处是:

好处:
  1. 简化了类的层次结构:你只需要一个"Worker"接口,而不是多个类来表示不同类型的工人。
  2. 易于扩展:如果你需要添加新类型的工人,只需创建一个新的类并实现"Worker"接口,不需要修改现有的代码。
  3. 符合规范:所有工人都遵守相同的接口规范,这使得代码更一致和易于理解。

总之,接口允许你定义一组通用规范,让不同的类来实现,从而提高了代码的可维护性、扩展性和可读性。这就是为什么要使用接口而不直接写类的原因。

案例:
// 定义一个工人接口
interface Worker {
    void startWork();
    void endWork();
}

// 木工类实现工人接口
class Carpenter implements Worker {
    @Override
    public void startWork() {
        System.out.println("木工开始工作");
    }

    @Override
    public void endWork() {
        System.out.println("木工结束工作");
    }
}

// 电工类实现工人接口
class Electrician implements Worker {
    @Override
    public void startWork() {
        System.out.println("电工开始工作");
    }

    @Override
    public void endWork() {
        System.out.println("电工结束工作");
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建木工对象并调用工作方法
        Worker carpenter = new Carpenter();
        carpenter.startWork();
        carpenter.endWork();

        // 创建电工对象并调用工作方法
        Worker electrician = new Electrician();
        electrician.startWork();
        electrician.endWork();
    }
}

4. 注意事项和细节

  1. 接口不能被实例化
  2. 接口中所有的方法是public方法, 接口中抽象方法, 可以不用abstract修饰
  3. 一个普通类实现接口, 就必须将该接口的所有方法都实现(在idea中在实现接口的哪一行里可以 用 alt + 回车 快捷键)
  4. 抽象类实现接口, 可以不用实现接口的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值