吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2746|回复: 9
收起左侧

[学习记录] 【自学笔记】 Java基础 - 接口

  [复制链接]
LongJL 发表于 2021-7-13 12:13
本帖最后由 LongJL 于 2021-7-13 12:28 编辑

接口

概念

接口就是一种公共的规范标准,接口是一种引用数据类型,最重要的内容是其中的抽象方法。只要符合规范标准,就可以大家通用。当一个类中所有方法都是抽象方法得时候,我们就可以将其定义为接口,接口也是一种引用数据类型,他比抽象类还要抽象。

接口的定义

  1. 规则的定义
  2. 程序的扩展性

格式

public interface 接口名称 {
        //接口的内容
}

特点

  • 接口不能实例化
  • 接口和类直接是实现关系
  • 接口的子类(实现类),要么重写接口中所有抽象方法,要么是抽象类
  • 接口可以实现多个

使用步骤

  • 接口不能直接使用,必须有一个实现类来实现接口。
    格式:
    public class 实现类名称 implements 接口名称 [,接口名称]{
    // ...
    }
  • 接口的实现类必须覆盖重写接口当中所有的抽象方法。
    实现:去掉abstract关键字,加上方法体大括号
  • 创建实现类对象,进行使用。

注意事项:

    如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己必须是抽象类。

接口的常量定义和使用

接口当中也可以定义"成员变量",但是必须使用 public static final三个关键字进行修饰
从效果上看,这其实就是接口的【常量】
格式:
public static final 数据类型 常量名称 = 数据值;
注意

  1. 一旦使用了final关键字修饰,说明不可改变
  2. 接口当中得常量,可以省略public static final 注意:不写也照样是这样。
  3. 接口当中得常量,必须进行赋值,不能不赋值
  4. 接口中常量得名称,使用完全大写的字母,用下划线进行分割(推荐命名)
  5. 实现类中可以直接使用接口中的成员变量,可以通过类名.变量名调用

接口的成员方法定义和使用

在定义接口中的成员方法时,哪怕没有加入public abstract,系统也会默认加上,JDK7和JDK7之前所有接口中的方法只能是抽象方法,在JDK8和JDK9中有了一些新特性
格式:
public abstract void 方法名();

JDK8版中接口成员的特点

  • JDK8版本后,Java只对接口的成员方法进行了改进
  • 允许接口中定义带有方法体的方法
    如果是java7,那么接口中可以包含的内容有:
    1.常量
    2.抽象方法
    如果是java8,还可以额外包含有:
    1.默认方法
    public default 返回值类型 方法名称(参数列表) {
    //方法体
    }
    备注:
    1.接口当中的默认方法,可以解决接口升级的问题。
    2.调用默认方法,如果实现类当中没有,会向上查找
    3.接口的默认方法,可以通过接口实现类对象,直接调用。
    4.接口的默认方法,也可以被接口实现类覆盖重写
    5.如在多实现下,默认方法冲突那么实现类中必须重写冲突的默认方法
    2.静态方法
    格式:
    public static 返回值类型 方法名称(参数列表) {
    方法体
    }
    提示:
    就是把abstract或者default换成static即可,带上方法体。
    注意事项:
    1.不能通过接口实现类的对象来调用接口当中的静态方法。
    2.通过接口名称,直接调用其中的静态方法
    格式:
    接口名称.静态方法名(参数列表);

JDK9中接口成员的特点

普通私有方法:
private 返回值类型 方法名称(参数列表){方法体};
静态私有方法:
private static 返回值类型 方法名称(参数列表){方法体};
静态只能被静态调用
注意:private的方法只有接口自己才能调用,不能被实现类或别人调用。

接口的使用思路

  • 如果发现一个类中所有的方法都是抽象方法,那么就可以将该类,改进为一个即可
  • 设计到了接口大面积更新方法,而不想去修改每一个实现类,就可以将更新的方法,定义胃带有方法体的默认方法
  • 希望默认方法调用更加的简洁,可以考虑设计胃static静态方法。

类和接口的关系

  • 类和类的关系:继承关系,只能单继承,但是可以多层继承
  • 类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口,如果直接父类,和接口中出现了相同的方法声明,但是代码逻辑不一样,优先使用直接父类的代码逻辑
  • 接口和接口的关系:继承关系,可以单继承,也可以多继承

# 接口.zip (2.09 KB, 下载次数: 11)



免费评分

参与人数 3吾爱币 +3 热心值 +1 收起 理由
shaoxuangan + 1 + 1 谢谢@Thanks!
wu-ai-po-jie + 1 谢谢@Thanks!
Bo_He + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wxfy2009 发表于 2021-7-13 12:38
多谢,目前还在学习中。
 楼主| LongJL 发表于 2021-7-13 12:39
yangheng_wapj 发表于 2021-7-13 13:40
茶凉 发表于 2021-7-13 14:12
yangheng_wapj 发表于 2021-7-13 13:40
楼主,你看的谁的教java视频,推荐一下】

B站搜 尚硅谷 挺详细的
 楼主| LongJL 发表于 2021-7-13 14:20
yangheng_wapj 发表于 2021-7-13 13:40
楼主,你看的谁的教java视频,推荐一下】

我随便找了一期黑马 感觉挺老的
转身鬼魅 发表于 2021-7-13 14:36
真•笔记
dayudengyu 发表于 2022-11-13 15:20
想学JAVA不知道从哪学起
 楼主| LongJL 发表于 2022-11-14 09:52
dayudengyu 发表于 2022-11-13 15:20
想学JAVA不知道从哪学起

别学Java了,快跑
angel_bai 发表于 2022-11-28 08:20
学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表