文章目录

  • 普通内部类
    • 1.内部类的基本形式
    • 2.实例化一个内部类对象
  • 局部内部类
  • 匿名内部类
  • 静态内部类
    • 静态内部类的使用

内部类的四种形式:

  1. 普通内部类/成员内部类
  2. 局部内部类
  3. 匿名内部类
  4. 静态内部类

内部类是定义在另一个类中的类
使用内部类的主要原因有以下三点:

  1. 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。
  2. 内部类可以对同一个包中的其他类隐藏起来。
  3. 当需要定义一个回调函数其不想编写大量代码时,使用匿名内部类比较便捷。

普通内部类

1.内部类的基本形式

public class OutClassName{class InnerClassName{...}
}
  1. 内部类允许用public修饰,不违反一个.java文件中只能有一个public修饰类的规则。
    1.1 被public修饰的内部类,可以被其他的类所使用。
    1.2 被private修饰的内部类,只能被外部类所用。
  2. 外部类与内部类在同一个.java文件中,编译会生成不同的class文件,内部类文件命名OutClassName$InnerClassName.class
  3. 定义在类的成员位置的内部类,成为成员内部类。
  4. 内部类可以直接使用外部类的成员,因为内部类拥有外部类对象的引用(outClass.this)。
  5. 普通内部类,不允许使用静态成员变量。

2.实例化一个内部类对象

  1. 通过外部类的非静态方法来回实例化一个内部类对象。
  2. 通过外部类对象是去构造内部类对象outClass.new
  3. 在包外使用内部类,需保证内部类的访问修饰符为public。即,内部类遵循同样的访问修饰权限。
public class OutClass {class InnerClass{}public InnerClass getInnerClass(){return new InnerClass();}public static void main(String[] args) {OutClass outClass = new OutClass();// 方法一,通过外部类的非静态方法来实例化InnerClass innerClass1 = outClass.getInnerClass();// 方法二,通过外部类对象的new来时实现InnerClass InnerClass = outClass.new InnerClass();}
}

局部内部类

局部内部类与普通内部类不同点:所处的位置不同

匿名内部类

匿名是一种特殊的局部内部类。

静态内部类

使用statci修饰的普通内部类(成员内部类)。

  1. 静态内部类不能访问外部类非静态成员(可以访问静态的)。
  2. 静态内部类不依赖外部类对象。因此,其无法拥有外部类的静态引用。
  3. 静态内部类,可以有静态成员。

静态内部类的使用

  1. 通过new OutClassName.InnerClassName()实现。
  2. 通过外部类的成员方法实现。

Java基础-内部类相关推荐

  1. Java基础---内部类详解

    内部类 概念:定义在类内部的类,可以在类中方法外,也可以在类中方法中根据定义位置的不同,分为成员内部类和局部内部类成员内部类又划分为: 普通的成员内部类 静态的成员内部类 私有的成员内部类另外还有匿名 ...

  2. 黑马程序员 — JAVA基础 — 内部类、异常

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.内部类 1.概念: 把类定义在另一个类的内部,该类就被称为内部类. Eg:把 ...

  3. java基础--内部类学习笔记

    一.基本概念  1什么是内部类: 可以把一个类的定义放在另一个类的定义内部,这就是内部类.内部类作为外部类的一个成员,并且依附于外部类存在.一个类中可以存在多个内部类.内部类可以被protected, ...

  4. JAVA基础——内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

    成员内部类 静态内部类 局部内部类 匿名内部类 1.成员内部类(实例内部类.非静态内部类) 成员内部类中不能写静态属性和方法 实例化内部类,首先需要实例化外部类,通过外部类去调用内部类   作用 要想 ...

  5. Java基础 - 内部类03 - 匿名内部类详解

    1.什么是匿名内部类 定义 : 1.匿名内部类是定义在类的局部位置,如方法中.代码块中,且没有明确的类名: 2.是一个内部类,本质还是一个类: 3.没有类名: 4.同时还是一个对象. 2.匿名内部类的 ...

  6. Java基础--内部类及匿名内部类

    测试: 可以简化成一步:

  7. [Java基础]内部类基础

  8. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  9. 菜鸟学习笔记:Java基础篇5(抽象类与接口、回调函数、内部类)

    菜鸟学习笔记:Java面向对象篇下 抽象类 接口 回调函数 内部类 成员内部类 匿名内部类 抽象类 通过前面知识的学习,抽象类这个概念应该不难理解,但比较容易和后面要说的接口混淆,而且在面试中也比较爱 ...

最新文章

  1. J - One-Dimensional HYSBZ - 4688
  2. 条形压电陶瓷执行器件和高压驱动器
  3. monty python喜剧-看美剧学托福:最受美国人喜欢的100部美剧
  4. Kubernetes 选择 IPVS
  5. JAVA排序算法之插入排序
  6. chmod 文件夹及子文件夹_了解linux文件属性之chgrp,chown,chmod
  7. 1048:有一门课不及格的学生
  8. Apollo配置中心原理简介
  9. linux取设备分辨率,linux 获取系统屏幕分辨率
  10. js兼容性——获取当前浏览器窗口的宽高
  11. 公众号php空间是啥意思,什么是“希尔伯特空间”?
  12. vim修改tab默认4个空格
  13. mysql实验数据库报告_MySQL数据库技术》实验报告模板
  14. 毕业设计——如何画系统功能结构图?
  15. 数据恢复工具 winhex使用教程
  16. java毕设项目开源了,springboot+vue的应用级erp系统
  17. java 网页版通讯_JavaWeb网页聊天室(WebSocket即时通讯)
  18. 复杂性思维第二版 一、复杂性科学
  19. 小牛叔讲Python第1章: 编程界的瑞士军刀Python
  20. Servlet常见错误 404错误 405错误 500错误等。解决方法

热门文章

  1. 中科院开源协会镜像站 Android SDK镜像测试发布
  2. 我的世界java版怎么装在u盘_我的世界选择器参数怎么使用?
  3. 虚拟机扩容后mysql无法使用_VMWARE 扩容踩坑记
  4. java arraylist线程安全_ArrayList升级为线程安全的List
  5. uwsgi指定python路径_uWsgi服务器(2)--安装配置
  6. python字符串补空格输出_python格式化打印字符串
  7. abaqus切削为什么没有切屑_SiCp/Al复合材料超声振动辅助切削研究现状与进展
  8. 二十六、爬取拉钩网Python职位的数据
  9. 《化工原理》基本知识点
  10. 十七、去年jQuery的笔记