当前位置:网站首页>关于内部类
关于内部类
2022-07-29 13:41:00 【xiaokaikaa】
一、内部类是什么
在java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫内部类,外面的类就叫外部类。
在这情况下,这个内部类可以看做外部类的一个成员。
二、如何定义内部类
1.成员内部类
最常见的内部类就是成员内部类,也称作普通内部类;
代码如下:
public class Outer{
private String str1="外部类";
public class Inner{
//成员内部类
String str2="内部类";
public void test(){
System.out.println(str1);
System.out.pprintln(str2);
}
}
public static void main(String[] args){
Outer o=new Outer();
Inner i=o.new Inner();//使用外部类对象,创建内部类对象
i.test();
}
}
2.静态内部类
静态内部类就是用static修饰的内部类,这种内部类的特点是:
1、静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问;
代码如下:
public class Outer{
String name="zhangsan";
public static class Inner{
public void show(){
System.out.println("外部类的name为:"+new Outer().name);
}
}
}
2、如果外部类的静态成员与内部类的静态成员相同,可以通过"类名.静态成员"来访问外部类的静态成员;如果不同,可以直接调用外部类的静态成员名。
代码如下:
public class Outer{
static String name="zhangsan";
public static class Inner{
static String name="lisi";
public void show(){
System.out.println("外部类name:"+Outer.name);
System.out.pprintln("内部类name:"+name);
}
}
public static void main(String[] args){
Inner i=new Inner();
i.show();
}
}
public class Outer{
static String name="zhangsan";
public static class Inner{
static String name1="lisi";
public void show(){
System.out.println("外部类name:"+name);
System.out.pprintln("内部类name:"+name1);
}
}
public static void main(String[] args){
Inner i=new Inner();
i.show();
}
}
3.方法内部类
1、方法内部类就是定义在外部类的方法中,方法内部类只在该方法内可以用;
代码如下:
public class Outer{
public void show(){
final int a=25;
int b=10;
class Inner{
int c=5;
public void print(){
System.out.println("外部类方法中的常量a:"+a);
System.out.pprintln("内部类中变量c:"+c);
}
}
Inner i=new Inner();
i.print();
}
public static void main(String[] args){
Outer o=new Outer();
o.show();
}
}
2.由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
边栏推荐
猜你喜欢

BOM系列之Location对象

"Industrial flaw detection depth study method" the latest 2022 research were reviewed

AI全流程开发难题破解之钥

Super young!34-year-old professor, vice president of 985 Ace College!

leetcode linked list topic

还在开发短信验证码登录?试试(本机号码一键登录)

Gee engine modification UI interface graphic tutorial

gdb调试常用概念整理

企业需要知道的5个 IAM 最佳实践

十种实现延迟任务的方案
随机推荐
【MySQL】ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘
企业需要知道的5个 IAM 最佳实践
Network connection optimization for instant messaging mobile terminal development
HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
根据msql表的结构自动生成gorm的struct
基于降噪自编码器与改进卷积神经网络的采煤机健康状态识别
The core principles of electronic games
使用云服务器从0开始搭建云端Jupyter Lab|Notebook
How to set the explosion rate of legendary humanoid?Humanoid increase tutorial
iMedicalLIS监听程序(1)
关闭线程池 shutdown 和 shutdownNow 的区别
84.(cesium之家)cesium模型在地形上运动
Some thoughts on paying for knowledge
了解 AQS 底层原理
mariadbackup物理备份使用——筑梦之路
The new technical director, who is in the form of a isXxx Boolean type definition, tomorrow need not come!
Bika LIMS 开源LIMS集—— SENAITE的使用(分析/测试、方法)
【JS面试题】面试官问我:遍历一个数组用 for 和 forEach 哪个更快?
Leetcode65. 有效数字
trivy如何从非关系型数据库查询数据