Java接口编程-2022年4月24日

本文详细介绍了Java接口的概念,对比了接口与抽象类的异同,阐述了接口的规范,展示了接口在实际编程中的应用,包括常量接口、接口回调以及接口带来的好处。通过示例代码解释了如何实现和使用接口,强调了接口在降低耦合度、实现多态等方面的重要性。
摘要由CSDN通过智能技术生成

Java接口编程


时间 : 2022年4月22日

主题 : Java接口编程

作者 : NacJackson


一、什么是接口?

什么是接口?

水管可以通过分叉接口可以实现多转接,电脑接口可以通过接口可以实现很多的拓展功能

官方概念(来自百度):

image-20220424200133534

在Java中接口就是一种能力和约束,接口的定义就是代表定义了某种能力,方法的定义就是能力的具体要求

示例

interface demo_Interface_info {
    public abstract void method();
}

注意:接口支持多实现,可以为类扩充多种能力

二、接口与抽象类的异同

接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

第一点: 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
第二点: 接口可以多继承,抽象类不行
第三点: 接口定义方法,不能实现,而抽象类可以实现部分方法。
第四点: 接口中基本数据类型为static 而抽类象不是的。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

此处转载自冯立彬-接口和抽象类有什么区别

三、接口的规范

  • 接口在被实现的时候,必须实现接口中的所有抽象方法

  • 实现接口抽象方法时,访问修饰符必须是public

接口的声明

[访问修饰符] interface 接口名称 [extends 其他接口名]{
    //声明变量
    //抽象方法
}

四、接口的应用

接口的实现...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...

示例:

interface Person_behavior{}
abstract class Person{} 
class Boy extends Person implments Person_behavior{
    Boy(){}
}
class main{
    Person boy = new boy();
}

五、常量接口

  • 将多个常用与表示状态或固定值得变量,以静态常量的形式定义在接口中统一管理,提高代码可读性

  • final :不可改变

    1接口当中的常量,可以省略三个关键字,但是系统会默认是这三个;

    2接口当中的常量,必须进行赋值,不能不赋值;

    3接口中常量的名称,使用完全大写的字母,用下划线进行分隔;

  • 格式:public static final 数据类型 常量名称(大写) =数据值;

  • 访问常量:

  • 接口名称.常量;

此处转载自Damocless-接口当中的常量定义和使用

六、接口回调

4程序员-接口调用者
2工具-接口使用者
1程序员-接口实现者
3接口-标准

七、接口的好处

  • 程序的耦合度降低
  • 更自然的使用多态
  • 设计与实现完全分离
  • 更容易搭建程序框架
  • 更容易更换具体实现

八、代码

// Copyright (c) 2022.
// Author : Nac.Jackson
// Blog : http://www.mikea.ltd

package demo_interface;

/**
 * @Author : Nac.Jackson
 * @Date :2022 年 04 月 22 日 星期五
 * @Time :21 时 44 分 36 秒
 * @Description : 努力不完全,等于完全不努力。
 * @About : interface
 */
interface Person_behavior {
    public void run();
    public void jump();
    public void eat();
}
abstract class Person {
    protected String Name;
    protected String gender;

    public abstract String getGender();
    public abstract void setGender(String gender);
    public Person(String name){}
    abstract void setName(String name);
    abstract void getName();
    public String toString(){
        return "姓名:"+Name;
    }
}
class Boy extends Person implements Person_behavior{
    protected String gender="男";

    @Override
    public String getGender() {
        return gender;
    }

    @Override
    public void setGender(String gender) {
        this.gender = gender;
        super.gender = gender;
    }

    public Boy(String name) {
        super(name);
    }

    @Override
    public void run() {
        System.out.println(Name+"奔跑中......");
    }

    @Override
    public void jump() {
        System.out.println(Name+"跳跃中......");
    }

    @Override
    public void eat() {
        System.out.println(Name+"吃饭中......");
    }

    @Override
    void setName(String name) {
       this.Name = name;
    }

    @Override
    void getName() {
        System.out.println(super.Name);
    }
}
class Girl extends Person implements Person_behavior{
    protected String gender="女";

    @Override
    public String getGender() {
        return gender;
    }

    @Override
    public void setGender(String gender) {
        this.gender = gender;
        super.gender = gender;
    }

    public Girl(String name) {
        super(name);
    }

    @Override
    public void run() {
        System.out.println(Name+"奔跑中......");
    }

    @Override
    public void jump() {
        System.out.println(Name+"跳跃中......");
    }

    @Override
    public void eat() {
        System.out.println(Name+"吃饭中......");
    }

    @Override
    void setName(String name) {
        this.Name = name;
    }

    @Override
    void getName() {
        System.out.println(super.Name);
    }
}
class Test{
    public static void main(String[] args) {
        Person boy = new Boy("Tom");
        Person girl =  new Girl("Alice");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值