当前位置:网站首页>关于内部类
关于内部类
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 修饰符。
边栏推荐
- Bika LIMS 开源LIMS集—— SENAITE的使用(用户、角色、部门)
- 根据msql表的结构自动生成gorm的struct
- Sentinel vs Hystrix 限流到底怎么选?(荣耀典藏版)
- 无线传感器网络定位综述
- plsql连接oracle使用完毕之后关闭问题
- 九种方式,教你读取 resources 目录下的文件路径
- Network connection optimization for instant messaging mobile terminal development
- 使用云服务器从0开始搭建云端Jupyter Lab|Notebook
- The new technical director, who is in the form of a isXxx Boolean type definition, tomorrow need not come!
- 中国电信首发全新加密通话产品!有效防止网络监听
猜你喜欢
随机推荐
Nine kinds of way, teach you to read the resources files in the directory path
从零开发一款相机APP, Day03: Camera 常用api和最新框架介绍
推荐几款2022年好用的设备管理系统(软件)
何为擦除机制,泛型的上界?
【LeetCode】593. 有效的正方形
Bika LIMS 开源LIMS集—— SENAITE的使用(用户、角色、部门)
Bika LIMS 开源LIMS集—— SENAITE的使用(分析/测试、方法)
【pytorch】1.6 tensor 基本运算
多人协作开发出现代码冲突,如何合并代码?
The new technical director, who is in the form of a isXxx Boolean type definition, tomorrow need not come!
The core principles of electronic games
frp-免费内网穿透
Super young!34-year-old professor, vice president of 985 Ace College!
一文搞懂JS的原型链
关于知识付费的一些思考
手摸手写一个互联网黑话生成器
即时通讯移动端开发之网络连接优化
【模板引擎】微服务学习笔记六:freemarker模板引擎的常用命令介绍
[局域网劫持]如何搞懵蹭网的同学-详细过程
The Location object of BOM series