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

内部类java

内部类就是定义在一个类里面的类,里面的类可以理解成(寄生),外部类可以理解成(寄主)。

//外部类
public class people{//内部类public class heart{}    
}

内部类的使用场景、作用

1.当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构可以选择使用内部类来设计。内部类通常

2.可以方便访问外部类的成员,包括私有的成员。

3.内部类提供了更好的封装性,内部类本身就可以用private protectecd等修饰,封装性可以做更多控制。

1.静态内部类

有static修饰,属于外部类本身。

他的特点和使用与普通类完全一样,类有的成分它都有,只是位置在别人里面而已

public class Outer{//静态成员内部类public static class Inner{}
}
静态内部类创建对象的格式:
   

 静态内部类中是否可以直接访问外部类中的静态成员变量(static修饰)?

可以,外部类的静态成员只有一份 可以被共享访问

静态内部类中是否可以直接访问外部类中的实例成员变量?

不可以,因为外部类的实例成员必须用外部类对象访问

静态内部类的使用场景、特点、访问总结。

如果一个类中包含了一个完整的成分,如汽车类中的发动机类。

特点、使用与普通类是一样的,类有的成分它都有,只是位置在别人里面而已。

可以直接访问外部类的静态成员,不能直接访问外部类的实例成员。

注意:开发中实际上用的还是比较少。

2.成员内部类

无static修饰,属于外部类的对象

 成员内部类中可以直接访问外部类的静态成员,因为外部类的静态成员只有一份,可以被共享访问;成员内部类的实例方法中可以直接访问外部类的实例成员,因为必须先有外部类对象,才能用成员的内部类对象,所以可以直接访问外部类对象的实例成员。

成员内部类中访问所在外部类对象的格式:外部类名.this.外部类对象

 答案分别是  heartbeat    this.heartbeat     people.this.heartbeat   

3.局部内部类

局部内部类放在方法、代码块、构造器等执行体中。

局部内部类的类文件名为: 外部类$N内部类.class。

4.匿名内部类

本质上是一个没有名字的局部内部类,定义在方法中、代码块中等

作用:方便创建子类对象,最终目的是为了简化代码编写。

特点:匿名内部类是一个没有名字的内部类

           匿名内部类写出来就会直接产生一个匿名内部类的对象

           匿名内部类的对象类型相当于是当前new的那个类型的子类类型(相当于多态)

public class Test {public static void main(String[] args) {Anmial a = new Tiger();//多态//匿名内部类 Anmial b = new Anmial() {@Overridepublic void run() {System.out.println("匿名内部类");}};}
}abstract class Anmial{public abstract void run();
}
class Tiger extends Anmial{@Overridepublic void run() {System.out.println("老虎跑得快");}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 搭建多协议的串口服务器流程:RS-232、RS-485和TCP/IP、MQTT网络协议(代码示例)
  • 主机安全管理系统是什么?企业系统购买指南:2024年5款最佳选择
  • 区县邻近矩阵和区县质心距离矩阵
  • 如何选择AQL对应不同类型的产品?
  • 【数模资料包】最新数模国赛word+latex模版|数模常用的算法python+matlab代码
  • 304状态码
  • SOMEIP_ETS_067: UINT8Array_with_Length_0_strips_Payload
  • 应用程序编程接口 (API) — 简单解释
  • 飞睿智能家居人体微动感知雷达模组,宠物喂食器、LED灯控连续波雷达感应开关原理
  • 计算机网络信息安全,零基础入门到精通,收藏这一篇就够了!
  • TTS 文本 vs SSML
  • MIT APP Inventor服务器版编译
  • 关于平扫和增强磁共振的思考
  • Gradle安装保姆级教程
  • ProxySQL 读写分离配置
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • avalon2.2的VM生成过程
  • ERLANG 网工修炼笔记 ---- UDP
  • Meteor的表单提交:Form
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • node和express搭建代理服务器(源码)
  • node入门
  • 百度小程序遇到的问题
  • 从重复到重用
  • 多线程事务回滚
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • python最赚钱的4个方向,你最心动的是哪个?
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​水经微图Web1.5.0版即将上线
  • ​香农与信息论三大定律
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #162 (Div. 2)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (02)vite环境变量配置
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (接口封装)
  • (每日一问)基础知识:堆与栈的区别
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (一)appium-desktop定位元素原理
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • ****三次握手和四次挥手
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net Redis的秒杀Dome和异步执行
  • .NET连接数据库方式