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

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

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

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

内部类特点:

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();
  }
}

相关文章
|
存储 缓存 NoSQL
熟练使用 Redis 的五大数据结构:Java 实战教程
熟练使用 Redis 的五大数据结构:Java 实战教程
347 0
|
4月前
|
JSON API 数据格式
淘宝天猫商品评论API接口指南
淘宝天猫商品评论API接口助您高效获取评论数据。首先注册淘宝开放平台账号并完成实名认证,接着创建应用、申请权限(如“tmall.item.evaluate.get”),最后用编程语言调用API。该接口支持多样化数据(用户昵称、评分、追评等)、灵活筛选与分页功能,并依托淘宝技术确保实时性和稳定性,满足数据分析需求。
217 11
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习:从基础到高级应用
【10月更文挑战第3天】本文将深入浅出地介绍深度学习的基本概念、关键技术和应用实例。我们将从神经网络的基本原理出发,逐步探索深度学习的核心算法和模型,并通过具体案例展示如何将这些理论应用于实际问题中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和启发。
|
6月前
|
存储 固态存储 NoSQL
阿里云服务器ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘区别与选型参考
阿里云系统盘与数据盘如何选择?目前阿里云服务器的云盘主要有ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘可供选择,很多新手用户并不清楚他们之间的区别,也就不知道应该如何选择,因为不同的云盘在最大IOPS、最大吞吐量等性能上是有区别的。本文基于阿里云官方技术文档,结合实际应用案例,对ESSD AutoPL、ESSD PL-X、SSD云盘等主要云盘的区别做个介绍,以供参考,助您构建高性能、高可靠、高扩展的存储架构。
|
11月前
|
机器学习/深度学习 数据采集 人工智能
函数式编程的实际应用
【10月更文挑战第12天】 函数式编程作为一种编程范式,在数据处理、金融、科学计算、Web 开发、游戏开发、物联网、人工智能等多个领域有着广泛应用。本文通过具体案例,详细介绍了函数式编程在这些领域的实际应用,展示了其在提高效率、确保准确性、增强可维护性等方面的显著优势。
622 60
|
10月前
|
机器学习/深度学习 数据采集 人工智能
运维新纪元:AIOps引领智能运维变革####
本文探讨了人工智能与运维管理深度融合的前沿趋势——AIOps(Artificial Intelligence for Operations),它通过机器学习、大数据分析等技术手段,为现代IT运维体系带来前所未有的智能化升级。不同于传统依赖人力的运维模式,AIOps能够实现故障预测、自动化修复、性能优化等功能,大幅提升系统稳定性和运营效率。文章将深入分析AIOps的核心价值、关键技术组件、实施路径以及面临的挑战,旨在为读者揭示这一新兴领域如何重塑运维行业的未来。 ####
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
234 2
|
物联网 Java 测试技术
蓝桥杯-01简介
蓝桥杯-01简介
|
机器学习/深度学习 移动开发 Java
一文搞懂:一般用到的短信,邮件换行符号
一文搞懂:一般用到的短信,邮件换行符号
494 0
|
弹性计算 Shell 数据安全/隐私保护
动态管理Docker容器的自动扩展与缩减
【4月更文挑战第30天】
194 0