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

Java内部类

P191)如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须具体的指明这个对象的类型:OuterClassName.InnerClassName。

 

P191)内部类能访问其外围对象的所有成员,而不需要任何特殊条件。此外,内部类还拥有其外围类的所有元素的访问权。

 

P192)内部类的对象只能在于其外围类的对象相关的情况下才能被创建。构建内部类对象时,需要一个指向外围类对象的引用,如果编译器访问不到这个引用就会报错。如果要创建一个内部类的对象,你必须在new表达式中提供其外部类对象的引用,这时需要使用.new语法。要想创建内部类的对象,你不能按照你想象的方式,去引用外部类的名字,而是必须使用外部类的对象来创建内部类对象。

 

P193)如果你需要在内部类中生成对外部类的对象的引用,可以使用外部类的名字后面紧跟圆点和this。这样产生的引用自动的具有正确的类型,这一点在编译器就被知晓并受到检查,没有任何运行时开销。

 

P195)通过private内部类来实现接口,并将函数返回类型设为接口类型可以完全阻止任何依赖于类型的编码,并且完全隐藏了实现的细节。

 

P201)嵌套类

将内部类声明为static,这总类被称为嵌套类。普通的内部类对象隐式的保存了一个引用,指向创建它的外围对象。然而,当内部类时static时,就不是这样了。嵌套类意味着:

  1. 要创建内部类的对象,并不需要其外围类的对象。
  2. 不能从嵌套类的对象中访问非静态的外围类对象。

普通内部类的方法与字段,只能放在类的外部层次上(???),所以普通的内部类不能由static数据和static字段,也不能包含嵌套类。但是嵌套类可以包含所有这些东西。

你放到接口中的任何类都自动是public和static的。因为类是static的,所以可以在接口中定义一个嵌套类(不需要显示声明成static)。你甚至能在内部类中实现其外围接口。如果你想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用,那么这是一个很方便的方法。

转载于:https://www.cnblogs.com/ITStruggler/p/7056636.html

相关文章:

  • $.ajax中的eval及dataType
  • https 安全验证问题
  • 平安科技移动开发二队技术周报(第八期)
  • ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
  • codevs 2074 营救 WW
  • 范式1F2F3F
  • 品牌管理之万变与不变——From 品牌管理培训
  • Nginx(四)-- 配置文件之location
  • 自定义View中的Path
  • PHP 从数组中删除指定元素
  • Hadoop 尝试
  • jQuery淡入淡出的轮播图
  • VMware® Workstation 12 Pro Linux Ubuntu 中subversion的服务器搭建
  • client offset scroll的区别
  • 彩扩机项目--散热马达驱动部分
  • 网络传输文件的问题
  • 0基础学习移动端适配
  • CentOS7简单部署NFS
  • Java应用性能调优
  • js算法-归并排序(merge_sort)
  • JS学习笔记——闭包
  • miaov-React 最佳入门
  • ng6--错误信息小结(持续更新)
  • SOFAMosn配置模型
  • springMvc学习笔记(2)
  • underscore源码剖析之整体架构
  • 对象引论
  • 复习Javascript专题(四):js中的深浅拷贝
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 用简单代码看卷积组块发展
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 我们雇佣了一只大猴子...
  • # .NET Framework中使用命名管道进行进程间通信
  • #define 用法
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (9)STL算法之逆转旋转
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)u-boot-nand.bin的下载
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ./configure、make、make install 命令
  • .NET关于 跳过SSL中遇到的问题
  • /proc/vmstat 详解
  • @EnableAsync和@Async开始异步任务支持
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [BZOJ3223]文艺平衡树
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [CentOs7]搭建ftp服务器(2)——添加用户
  • [CTO札记]如何测试用户接受度?
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日
  • [go 反射] 进阶