内部类(JAVA基础)
2022/1/19 11:20:58
本文主要是介绍内部类(JAVA基础),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
内部类
1、概念:把类定义在其他类的内部,我们称之为内部类;
2、内部类的特点
1)内部类可以访问外部类的成员,包括私有;
2)外部类想要访问内部类的成员,必须要创建内部类的对象;
3、内部类定义的格式:
1)
3、按在类中定义的位置不同,可以分为如下两种格式:
1)成员内部类:
<1>、定义在类的成员位置;
<2>、内部类可以访问外部类的成员,包括私有;
<3>、定义格式
a、外部类名.内部类名 对象名 = new 外部类名().new 成员内部类名();
b、当内部类是被静态所修饰的时候,出现了另外一种创建内部类的方式
外部类名.内部类名 对象名 = new 外部类名.内部类名();
2)局部内部类:
<1>、定义在方法中的类;
<2>、局部内部类可以直接访问外部类中所有的成员;
<3>、要想使用局部内部类中的方法,在定义局部内部类的成员方法中,
创建局部内部类对象调用方法。
3)匿名内部类:
<1>、语句定义格式:
new 类名(可以是抽象类/具体类/接口)(){
要重写的方法;
}
举例: interface A{
b();
c();
}
class B implements A{
b(){...}
c(){...}
}
A a = new B();
a.b();
a.c();
上述用匿名内部类改进为:
A a = new A(){
b(){...}
c(){...}
};
<2>、匿名内部类存在的前提:
要存在一个类或者是一个接口,这个类可以是具体的也可以是抽象的;
<3>、局部内部类访问局部变量的注意事项:
必须被final修饰?
为什么呢?
因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从
堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,
这样,在堆内存里面存储的其实是一个常量值。通过反编译工具可以看一下。
这篇关于内部类(JAVA基础)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding