当前位置: 首页 > news >正文

抽象类接口内部类

文章目录

    • 抽象类
    • 接口
    • 接口和类之间的关系
    • JDK8开始,接口中新增的方法
      • 1. JDK8中新增的有函数体的方法(默认、静态)
        • 接口中的默认方法
        • 接口中的静态方法
      • 2. JDK9新增的私有方法
    • 接口的应用&适配器设计模式
      • 接口的多态
      • 适配器设计模式
    • 内部类
      • 1. 成员内部类
        • 成员内部类书写
        • 获取内部类对象的两种方式
        • 内部类如何获取外部类的成员变量?
        • 总结
      • 2. 静态内部类
      • 3. 局部内部类
      • 4. 匿名内部类
        • 总结

抽象类

  • 抽象类不一定有抽象方法
  • 含有抽象方法的类一定是抽象类
  • 抽象类可以有构造方法
  • 抽象类的子类:
    • 要么重写抽象类中所有的抽象方法
    • 要么也是抽象类

接口


练习:


接口和类之间的关系

JDK8开始,接口中新增的方法

1. JDK8中新增的有函数体的方法(默认、静态)

接口中的默认方法

接口中的静态方法


接口中 static 方法的特性(如你图中所示):

  • 必须用 static 修饰(不能省略)。
  • 只能通过接口名调用,例如:MyInterface.show()
  • 不能通过实现类或对象调用(虽然语法上可能允许,但语义错误且不推荐)。
  • 不能被实现类重写 ——如果实现类定义了同名同参的 static 方法,那只是“隐藏”(hide),不是重写
interfaceMyInterface{publicstaticvoidshow(){System.out.println("Interface static method");}}classMyClassimplementsMyInterface{// 这不是重写!这是“隐藏”publicstaticvoidshow(){System.out.println("Class static method");}}publicclassTest{publicstaticvoidmain(String[]args){MyInterface.show();// 输出: Interface static methodMyClass.show();// 输出: Class static methodMyInterfaceobj=newMyClass();obj.show();// ❌ 编译错误!static 方法不能通过对象调用}}

子类把从父类继承下来的虚方法表里面的方法进行覆盖了,这才叫重写。

2. JDK9新增的私有方法



在 JDK 9 引入接口私有方法(privateprivate static)的核心目的,就是为了解决代码复用问题。它们专门设计用来被接口内的其他方法调用,以避免多个default方法或static方法中出现重复代码。

私有方法不需要加default

private本身就是为接口中的方法提供服务的,不需要被外部调用。所以不能加default

在 Java 的接口(Interface)中,除了 default 方法和 static 方法之外,不存在其他类型的“非 abstract”方法。所以不能为“非 default、非 static”方法服务

在 JDK 9 及以后,接口中只能有以下 4 种 方法:

方法类型修饰符是否有方法体?能否调用 private 方法?
抽象方法public abstract(可省略)无 (只有声明)不能 (因为它没有代码块去写调用逻辑)
默认方法default能 (调用private实例方法)
静态方法public static能 (调用private static方法)
私有方法private/private static能 (互相调用)

以上是关于接口知识点内容。


接口的应用&适配器设计模式

接口的多态

适配器设计模式

代码示例


内部类

类的五大成员:

  • 属性
  • 方法
  • 构造方法
  • 代码块
  • 内部类


内部类分类:

  • 成员内部类
  • 静态内部类
  • 局部内部类(写在方法里)
  • 匿名内部类

前三种了解就行,匿名内部类重点掌握。

1. 成员内部类

成员内部类书写

获取内部类对象的两种方式

内部类如何获取外部类的成员变量?


该例子的内存结构图:


002地址指向的内存中,存了指向外部类的地址值,所以可以使用语句:Outer.this.a

总结

2. 静态内部类

3. 局部内部类


4. 匿名内部类


总结

http://www.jsqmd.com/news/484668/

相关文章:

  • 用大模型和RAG打造智能客服系统,小白也能轻松上手
  • 转载 Java内部类详解
  • 416. 分割等和子集-day39
  • RAG技术解析:让大模型从“闭卷考试“到“开卷考试“的进化
  • 小白的C语言之路(4)——指针运算与动态内存分配
  • Thinkphp和Laravel框架微信小程序的小区废品收购管理系统-
  • Thinkphp和Laravel框架微信小程序的手机银行储蓄业务系统的设计与实现
  • 先甩个最核心的计数器代码镇楼
  • 收藏!小白程序员快速入门:用Agent Skills让大模型能力可复用、可管理
  • 电导增量法INC仿真模型,作为目前实际光伏发电系统中最常用的mppt算法,可以用于学习研究
  • 【跟韩工学Hadoop系列第4篇】004篇-Hadoop 集群搭建-001篇
  • DEF CON CTF Annelid Challenge 深度解析
  • 2026本地口碑佳老火锅品牌排行,看看有你爱吗,重庆火锅/火锅/美食/川渝火锅/火锅店/老火锅,老火锅品牌排行榜单 - 品牌推荐师
  • 零基础搞定 PVE SPICE:远程更流畅 + 文件共享
  • 【C++】C++类的幕后高手:友元、内部类、匿名对象与编译器优化深度解析
  • 常用反弹shell简单分析
  • 玩转T-Mats库:航空发动机气路故障仿真那些事儿
  • DEF CON CTF Sudo Make Me a Sandwich —— 从权限边界到特权执行链的完整攻防复盘
  • Kali Linux 基础
  • Nunchaku FLUX.1 CustomV3体验报告:单卡RTX4090下的生成速度与画质实测
  • 【基于GasTurb的不同构型发动机性能对比】 GasTurb软件 1、涡桨、涡扇发动机等构型
  • 基于模拟退火算法优化支持向量机(SA-SVM)的多变量时间序列预测 SA-SVM多变量时间序列...
  • 从零开始,探索BTT捣蛋的6自由度仿真
  • 分期乐携程卡回收一般几折?跟着时节跳动的心电图 - 京回收小程序
  • YOLO12模型安全攻防:对抗样本鲁棒性测试与防御加固部署
  • 基于SSA-SVM的多变量时间序列预测的Matlab代码(采用Libsvm工具箱,适用于Win...
  • 字节面试官怒怼:RAG只会检索?大模型意图识别实战(非常详细),从入门到精通,收藏这一篇就够了!
  • 3D Face HRN保姆级教程:如何用Pillow预处理图像提升人脸检测成功率
  • Visual Studio 2026(VS2026) 密钥/激活码
  • 基于MATLAB/Simulink的4机10节点系统暂态稳定性仿真