首页 > 编程语言 >java中的内部类

java中的内部类

时间:2024-04-27 20:23:22浏览次数:23  
标签:部类 java 内部 静态 成员 sleep public

java中的内部类

目录

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 {
    
        @Override
        public void sleep() {
            System.out.println("学生睡觉");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            Person p1 = new Person() {
    
                @Override
                public void sleep() {
                    System.out.println("学生睡觉");
                }
            };
    
            p1.sleep();
    
            Person p2 = new Student();
            p2.sleep();
        }
    }
    

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

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

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

总结

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

标签:部类,java,内部,静态,成员,sleep,public
From: https://www.cnblogs.com/ning23/p/18162455

相关文章

  • Java(3)-POJO和Java bean的区别是什么
    POJO(PlainOldJavaObject)和JavaBean是两个密切相关但有细微差别的概念,在Java编程中经常被提及。这两者之间的主要区别在于它们的用途和设计要求。首先简单地介绍POJO是什么,POJO是"PlainOldJavaObject"的缩写,指的是一个普通的Java对象,它不依赖于特定的Java框架,也......
  • 在html中应用JavaScript
    1.在html中调用jsjs需要用<script>脚本写入位置</script>声明;也可以用外部文件引入,如<scripttype="text/javascript"src="script1.js"></script>。当js位于html的<head>内:这些脚本在选择触发它的时候被触发当js位于html的<body>内:这些脚本在页面加载时触发2.js的数据类......
  • Java(1)-粗解动态绑定
    Java的动态绑定机制是OOP中一个非常核心的概念。要理解动态绑定需要从Java的对象和类说起。当我们在创建一个类的时候,实际上就是在定义一种新的数据类型。类中可以包含属性和方法,基于这个类创建一个对象的时候,这个对象就有拥有该类所有的属性和方法。在引出动态绑定的概念之前,可......
  • Java(2)-粗解类加载器
    Java的类加载器是Java运行时环境中的重要组件,核心功能是将类的字节码加载到Java虚拟机中。举个例子可以通过一个图书馆的比喻来形象地解释类加载器的作用、用法和使用场景。想象一下,有一个巨大的图书馆(JVM),其中有非常多的藏书(类)。当你(程序)需要阅读一本书(使用一个类)时,你首先需要......
  • 学习笔记-Java内存区域
    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,墙里面的人想出来。运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间。有的区域随着虚拟机进程启动一直......
  • 【Java】java1.8安装教程及java环境配置
    一、下载JDK源文件1、根据自己系统,下载对应的文件下载地址:Java存档下载-JavaSE8u211及更高版本|Oracle中国 2、下载后,可将安装包移动到自定义目录中,然后双击文件进行安装操作 二、安装1、双击安装文件,根据安装向导指引,点击下一步,进行安装 2、点击下一步后,根......
  • java发送http请求
    privatevoidhandleCartItems(List<CartVO>vos){//1.获取商品idSet<Long>itemIds=vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());//2.查询商品ResponseEntity<List<ItemDTO>>response......
  • 在JavaScript中,DOM对象与jQuery对象的区别与转换
    Dom原生对象和jQuery对象的区别:jQuery选择器得到的jQuery对象和标准的js中的document.getElementById()取得的dom对象是两种不同类型,两者不等价。注:js原生获取的dom是一个对象;jQuery对象就是一个数组对象。JQuery无法使用DOM对象的任何方法,同样的DOM对象也不能使用JQuery里......
  • Java读取网址信息
    Java读取网址信息今天的需求是根据接口获取JSON数据并存入,之前只会前端用Ajax或者Axios去处理显示出来没想过后端也要拿,没有思路于是查找,发现都是基础以前用的还是太少了,特此总结,后续有需要再补充。1.读取get请求,无需参数publicstaticStringget(StringurlStr){//......
  • 微服务想缓存一些数据,不希望重复调用。java SoftReference软引用存储缓存
    背景:微服务我们要调用字典数据,但是很多都是要重复调用的,没有缓存,我为了设置一个应用的缓存,并且可以定时清理,更新 首先定义两个静态数据,。一个软连接缓存,一个定时清理线程privatestaticSoftReference<Map<String,Map<String,DictionaryVo>>>plmDicMapCache=newSoftR......