一、成员内部类
代码:

public class Test10 {public static void main(String[] args) {/*方式1创建成员内部类对象*/C c = new C();C.D d = c.new D();/*方式2创建成员内部类对象*/C.D d1 = c.getClassD();}
}
class C{private String name = "外部类";public void run(){System.out.println("外部类奔跑");}/*创建一个返回D对象的方法*/public D getClassD(){return new D();}/*使用内部类的属性和方法*/public void eat(){D d = new D();System.out.println(d.value);d.say();}class D{private String value = "DDD";private String name = "内部类";public void say(){System.out.println(C.this.name);System.out.println(name);run();}}
}

1、Inner类定义在Outer类的内部,相当于Outer类的成员变量的位置,Inner类可以使用任意访问修饰符,如:public、private、protected等。
2、Inner类中定义的test()方法可以访问Outer类中的数据,不受访问控制符的影响。

3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );如创建Inner的内部类对象:要先创建外部类对象:Outer o = new outer(); 创建内部类:Inner i = o.new Inner();访问Inner中的test()方法:i.test();
4、如果外部类和内部类具有相同的成员变量或方法,内部类可以直接访问内部类的成员变量或方法,但如果内部类访问外部类的成员变量或者方法时,需要使用this关键字

二、静态内部类
静态内部类就是用static修饰的内部类
1、静态内部类不能直接访问外部类的非静态成员,但,可以通过new 外部类().成员的方式访问;

2、如果外部类的静态成员与内部类的静态成员相同, 可以通过"类名.静态成员"来访问外部类的静态成员;如果不同,可以直接调用外部类的静态成员名。

三、局部内部类

//在局部位置,可以创建内部类对象,通过对象调用和内部类方法
class Outer {private int age = 20;public void method() {final int age2 = 30;class Inner {public void show() {System.out.println(age);//从内部类中访问方法内变量age2,需要将变量声明为最终类型。System.out.println(age2);}}Inner i = new Inner();i.show();}
}

为什么局部内部类访问局部变量必须加final修饰呢?
因为局部变量是随着方法的调用而调用,使用完毕就消失,而堆内存的数据并不会立即消失。
所以,堆内存还是用该变量,而该变量已经没有了。为了让该值还存在,就加final修饰。
原因是,当我们使用final修饰变量后,堆内存直接存储的是值,而不是变量名。

四、匿名内部类
本质:其实是继承该类或者实现接口的子类匿名对象

interface Inter {public abstract void show();
}class Outer {public void method(){new Inner() {public void show() {System.out.println("HelloWorld");}}.show();}
}class Test {public static void main(String[] args)  {Outer o = new Outer();o.method();}
}    

内部类的分类及其定义相关推荐

  1. java嵌套类型 无法隐藏外层类型_java内部类深入详解 内部类的分类 特点 定义方式 使用...

    java内部类 内部类的分类 特点  定义方式 使用   外部类调用内部类 多层嵌套内部类  内部类访问外部类属性  接口中的内部类  内部类的继承  内部类的覆盖  局部内部类 成员内部类 静态内部 ...

  2. Java的知识点14——内部类的概念、内部类的分类

    内部类的概念 一般情况,我们把类定义成独立的单元.有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses). 内部类可以使用public.default.protecte ...

  3. 内部类的分类:成员内部类、静态内部类、局部内部类、匿名内部类

    内部类 故名思义 -- 就是在一个类A的内部定义另外一个类B,那么类A就是外部类,类B就是A的内部类. 首先需要明确: 1.内部类一定要定义在外部类的"{}"里面,而不是简单的写在 ...

  4. Java内部类的分类 西安尚学堂

    内部类的分类 笔者认为内部类之所以很难理解,正是因为语法覆盖了大量难以理解的技术(如果都像基础内部类那样,就没有多少意思了).内部类可以分为四种:成员内部类,局部内部类,嵌套类,匿名内部类. 静态内部 ...

  5. Java中,内部类的概述和内部类的访问特点和内部类的分类(内部类的位置)

    内部类的概述: 把类定义在另一个类的内部,该类就被称为内部类. 举例:把类B定义在类A中,类B就被称为内部类. 内部类的访问特点: A:内部类可以直接访问外部类的成员,包括私有成员. B:外部类要想访 ...

  6. NLTK频率分类中定义的函数

    NLTK频率分类中定义的函数 例子 描述 fdist=FreqDist(samples) 创建包含给定样本的频率分布 fdist.inc(sample) 增加样本 fdist['monstrous'] ...

  7. Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(二)

    Paper:自动驾驶领域SAE标准之<道路机动车辆驾驶自动化系统相关术语的分类和定义>官方英文原文翻译与解读(二) 目录 自动驾驶领域SAE标准之<道路机动车辆驾驶自动化系统相关术语 ...

  8. Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(一)

    Paper:自动驾驶领域L级别SAE标准<道路机动车辆驾驶自动化系统相关术语的分类和定义&Taxonomy and Definitions for Terms Related to Dr ...

  9. WEB漏洞分类与定义指南

    WEB漏洞分类与定义指南 web vulnerability classification and definition guideline 前 言 本标准按照 本标准按照 GB/T1.1GB/T1. ...

最新文章

  1. RabbitMQ调试与测试工具-v1.0.1 -提供下载测试与使用
  2. 配置JDK时环境变量path和JAVA_HOME的作用
  3. dos窗口ping命令测试实战
  4. 发布5个月全系下跌500 麒麟980+40W快充 多亏了华为P30!
  5. iOS中POST请求
  6. 缺陷调研报告_工厂的缺陷的分析报告及产生原因
  7. java shirofilter_Spring项目集成ShiroFilter简单实现权限管理
  8. 信奥中的数学:信息论基础
  9. 一个简单的Blob存取例子
  10. 信息系统项目管理师视频教程——10 信息系统项目管理基础
  11. vscode快速格式化代码
  12. 纯干货,用好PPT中的异形,提高页面的设计感,建议收藏!
  13. The following method did not exist: kotlin.collections.ArraysKt.copyInto([B[BIII)[B
  14. matlab三维投影图,matlab三维图投影轮廓
  15. You can't specify target table 'ship_product_cat' for update in FROM clause
  16. ROS turtlebot_follower :让机器人跟随我们移动
  17. Python发送邮件(以QQ邮箱为例)
  18. uva1626 括号序列
  19. 2021河南省ICPC省赛总结
  20. chariot iperf使用_调用IxChariotAPI测试吞吐量方法

热门文章

  1. JS替换空格回车换行符
  2. varnish---反向代理web加速缓存服务器和CDN的推送
  3. RAID磁盘阵列的原理与搭建
  4. Leetcode题目:Rectangle Area
  5. CentOS 7 修改终端字符界面分辨率
  6. 机房收费系统重构(三)—工厂+反射+DAL
  7. myeclipse智能提示设置
  8. [问题处理]redmine的gantt图导出出现‘星星星星星星星星’怎么解决
  9. PHP获取重定向URL的几种方法
  10. sdwan支持的网络设备类型