java中的内部类

news/发布时间2024/5/9 18:35:33

java中的内部类

目录
  • java中的内部类
      • 1.定义
      • 2.分类
        • 非静态成员式的内部类
        • 局部内部类
        • 匿名内部类
        • 静态成员式内部类
    • 总结

1.定义

  1. 内部类是一个定义在另一个类中的类
  2. 内部类可以把一些数据统一的隐藏起来,从而增强面向对象的封装性

2.分类

  1. 非静态成员式的内部类

    1. 非静态成员式内部类可以访问该类定义所在的作用域中的所有数据,方法,包括私有数据
    2. 非静态成员式内部类不能声明static成员
    3. 非静态成员式内部类不能在该类定义静态方法中直接使用
    4. 访问非静态成员式内部类:外部类名.内部类 变量 = new 外部类名().new 内部类名()
    5. 非静态成员式内部类可以实现多继承
  2. 局部内部类

    1. 局部内部类定义在代码块、方法体内
    2. 局部内部类不能使用,private,public,protected,static修饰
    3. 局部内部类作用域仅限于当前方法中
    4. 局部内部类和非静态成员式内部类一样,不能拥有静态成员
    5. 局部内部类访问的局部变量必须是final修饰的,java8以后会自动添加上隐藏式的final
  3. 匿名内部类

    1. 匿名局部内部类
    public abstract class Person {public abstract void sleep();
    }
    
    public class Student extends Person {@Overridepublic void sleep() {System.out.println("学生睡觉");}
    }
    
    public class Test {public static void main(String[] args) {Person p1 = new Person() {@Overridepublic void sleep() {System.out.println("学生睡觉");}};p1.sleep();Person p2 = new Student();p2.sleep();}
    }
    

    在上面的代码中p1对象和p2对象一样,但是p1对象只能使用一次

    1. 匿名内部类使用前提,必须继承一个父类,或者去实现一个接口
  4. 静态成员式内部类

    1. 静态内部类,场景:如果一个类只想把另一个类隐藏起来,而不想引用外部类对象,类似于工具类
    2. 访问静态内部类的方法:外部类名.内部类名 = new 外部类名.内部类名()
    3. 静态成员式内部类创建实例对象的时候不必创建外部类对象
    4. 静态成员式内部类可以直接访问外部类的静态成员,不能直接访问外部类的非静态成员
    5. 外部类可以通过完整的类名直接访问静态内部类的静态成员

总结

内部类的出现是为了减少一个类的使用,即:如果该类只会使用一次,并且他的父类或者要实现的接口,那么就可以方便的使用内部类,这样可以让代码的结构更加紧凑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/11248760.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Fastbin attackDouble free和Unsortbin leak的综合使用

Fastbin attack&&Double free和Unsortbin leak的综合使用✅ 今天做一个综合题目,包括利用Fastbin attack实现多指针指向一个地址,以及利用Unsortbin leak泄露libc基地址和修改__malloc_hook地址为one_gadget 题目是buuctf上面的一道题目,题目链接 https://buuoj.cn/…

python学习思维导图分享

python 本文包含了我的一些python学习的笔记和思维导图 第一部分:python基础导图下载链接 第二部分:函数及其他文件操作导图下载链接 第三部分:类及网络编程导图下载链接 第四部分:mysql导图下载链接

微机结构

微型计算机结构 总体来说,微型计算机的结构是采用总线结构实现相互之间的信息传递。CPU和存储器通过总线相互连接,I/O设备通过I/O接口连接在总线上。 总线是计算机各部件之间传输数据的通道,有三类总线分别是:数据总线、地址总线和控制总线(反馈)。主要特性有:公共性、分…

京东web端h5st—4.7逆向分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6Ly93d3cuamQuY29tLw== 分析流程了解h5st 看了sha256相关加密算法逻辑b…

Games 101: 旋转矩阵

旋转矩阵 本文主要介绍了旋转矩阵的推导,分为两种方式:旋转坐标 旋转坐标轴 以下坐标系都是右手坐标系旋转坐标 已知坐标点\(A(x_a,y_a)\), 旋转\(\theta\)角后变为坐标点\(B(x_b,y_b)\),求解旋转矩阵.\[{\large \begin{align*} \begin{split} x_a &=r_a \cdot cos(\alp…

2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。 需要注意

2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。 需要注意的是,白色车可以垂直或水平移动,而白色象可以沿对角线移动,它们不能跳过其他棋子。…