类的内部成员之五:内部类

简介: 类的内部成员之五:内部类

类的内部成员之五:内部类

内部类:把类定义在其他类的内部

内部类特点:

A:内部类可以直接访问外部类的成员,包括私有

B:外部类要访问内部类的成员,必须创建对象

内部类的位置

成员位置:定义在成员位置的类,称为成员内部类

局部位置:定义在局部位置的类,称为局部内部类

格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象

举例

class Outer {
  private int s;
  public class Inner {
    public void mb() {
    s = 100;
    System.out.println("在内部类Inner中s=" + s);
  }
}
public void ma() {
  Inner i = new Inner();
  i.mb();
  }
}
public class InnerTest {
  public static void main(String args[]) {
  Outer o = new Outer();
  o.ma();
  }
}
public class Outer {
  private int s = 111;
  public class Inner {
  private int s = 222;
  public void mb(int s) {
    System.out.println(s); // 局部变量s
    System.out.println(this.s); // 内部类对象的属性s
    System.out.println(Outer.this.s); // 外部类对象属性s
  }
}
public static void main(String args[]) {
  Outer a = new Outer();
  Outer.Inner b = a.new Inner();
  b.mb(333);
  }
}

局部内部类访问局部变量必须用final 修饰 ?

局部变量会随方法结束而消失,但对象可能还需要使用这个变量,堆内存不会因此而消失

匿名内部类

就是内部类的简化写法

前提:存在一个类或者接口

格式:new 类名或者接口名(){

重写方法;

}

本质:是一个继承了该类或者实现了该接口的子类匿名对象

举例

interface A{
  public abstract void fun1();
}
public class Outer{
  public static void main(String[] args) {
  new Outer().callInner(new A(){
//接口是不能new但此处比较特殊是子类对象实现接口,只不过没有为对象取名
  public void fun1() {
  System.out.println(“implement for fun1");
    }
  });// 两步写成一步了
}
public void callInner(A a) {
  a.fun1();
  }
}

相关文章
|
算法 计算机视觉
使用积分图的自适应二值化算法
使用积分图的自适应二值化算法
|
5月前
|
存储 网络协议 算法
ISIS协议详解
ISIS协议是一种链路状态路由协议,广泛用于大规模网络中。它最初基于OSI模型设计,后经扩展支持TCP/IP协议。ISIS通过SPF算法计算最短路径,使用NSAP地址进行设备寻址,具备灵活的区域划分和分层结构。协议通过L1、L2及L1/2路由器实现区域内部与骨干区域的通信,支持P2P和广播网络类型,具备邻接建立、LSDB同步、路由计算等核心机制,广泛应用于运营商和企业骨干网中。
|
9月前
|
JSON API 数据格式
淘宝天猫商品评论API接口指南
淘宝天猫商品评论API接口助您高效获取评论数据。首先注册淘宝开放平台账号并完成实名认证,接着创建应用、申请权限(如“tmall.item.evaluate.get”),最后用编程语言调用API。该接口支持多样化数据(用户昵称、评分、追评等)、灵活筛选与分页功能,并依托淘宝技术确保实时性和稳定性,满足数据分析需求。
448 11
|
机器学习/深度学习 数据采集 人工智能
函数式编程的实际应用
【10月更文挑战第12天】 函数式编程作为一种编程范式,在数据处理、金融、科学计算、Web 开发、游戏开发、物联网、人工智能等多个领域有着广泛应用。本文通过具体案例,详细介绍了函数式编程在这些领域的实际应用,展示了其在提高效率、确保准确性、增强可维护性等方面的显著优势。
1067 60
|
数据采集 JSON 前端开发
Python爬虫进阶:使用Scrapy库进行数据提取和处理
在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。
|
存储 前端开发 Android开发
GB28181设备接入侧录像查询和录像下载技术探究之实时录像
我们在对接GB28181设备接入侧的时候,除了常规实时音视频按需上传外,还有个重要的功能,就是本地实时录像,录像后的数据,在执法记录仪等前端设备留底,然后,到工作站拷贝到专门的平台。
426 1
|
存储 缓存 监控
【赵渝强老师】HBase的体系架构
本文介绍了HBase的体系架构,包括HMaster、RegionServer和ZooKeeper的主要功能。HMaster负责Region的分配和管理,RegionServer处理数据的读写操作,ZooKeeper维护集群状态并协调分布式系统的运行。文章还详细解释了Region、WAL预写日志、Block Cache读缓存和MemStore写缓存的作用。
709 0
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
381 2
|
SQL XML 安全
【软件测试】 测试分类
【软件测试】 测试分类
|
API 图形学 Swift
【Swift开发专栏】Swift与Core Graphics框架
【4月更文挑战第30天】本文介绍了Swift如何与Apple的Core Graphics框架结合,用于高性能的图形渲染和用户界面设计。Core Graphics提供底层绘图接口,包括图形上下文、路径、颜色空间、渐变和阴影等概念。在Swift中,开发者可直接调用Core Graphics函数,创建图形上下文、设置绘图属性、绘制图形和处理图像。文章还展示了如何实现渐变填充、阴影效果及自定义绘图代码,帮助开发者利用Swift创造复杂的图形和动画。通过掌握这些技能,开发者能为移动应用打造更具吸引力的视觉体验。
375 1

热门文章

最新文章