当前位置:网站首页>关于内部类
关于内部类
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 修饰符。
边栏推荐
猜你喜欢

分布式事务方案

Network connection optimization for instant messaging mobile terminal development

力扣 206.反转链表--递归解决

Research on the thinking and application methods of the frontier of ESI research

PyQt5快速开发与实战 7.1 信号与槽介绍

TCP和UDP的基本认识

【10点公开课】:快手GPU/FPGA/ASIC异构平台的应用探索

从KEIL仿真界面导出数据的技巧

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

grid的使用
随机推荐
PytestFixture实战应用+Pytest.ini与conftest.py应用详解+Fixture及yield实现用例前置后置
开放式耳机推荐哪款最好最实用、最好的开放式耳机推荐
Alibaba CTO Cheng Li: open source is the source of basic software!
The key to cracking AI full-process development problems
Gee engine modification UI interface graphic tutorial
Nine kinds of way, teach you to read the resources files in the directory path
分布式事务方案
Leetcode66. 加一
The core principles of electronic games
plsql连接oracle使用完毕之后关闭问题
升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等
线程池面试汇总
R错误:缺少值不允许写在下面的作业的数据帧
抓住这几个关键点,做薪酬数据分析并不难
How to Improve Embedded Programming with MISRA
iMedicalLIS监听程序(1)
TAP 文章系列-10 | 从应用感知能力谈 TAP 的约定服务
web会话管理与xss攻击
关闭线程池 shutdown 和 shutdownNow 的区别
Hash table implementation code