当前位置:网站首页>About inner classes
About inner classes
2022-07-29 14:24:00 【xiaokaikaa】
一、内部类是什么
在java语言中,可以把一个类定义到另外一个类的内部,This class inside a class is called an inner class,The outer class is called the outer class.
在这情况下,This inner class can be seen as a member of the outer class.
二、如何定义内部类
1.成员内部类
The most common inner class is the member inner class,也称作普通内部类;
代码如下:
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、The method of the inner class is defined in the method of the outer class,Method inner classes are only available within that method;
代码如下:
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.由于方法内部类不能在外部类的方法以外的地方使用,Therefore methods inner classes cannot use access control characters and static 修饰符.
边栏推荐
猜你喜欢
随机推荐
尚硅谷大叔培训:揭秘Flink四种执行图——ExecutionGraph和物理执行图
The core principles of electronic games
深开鸿:万物智联的大江上,升起一轮开源鸿蒙月
TCP和UDP的基本认识
How to return all prime factors of a number?
带你了解一下PHP搭建的电商商城系统
基于降噪自编码器与改进卷积神经网络的采煤机健康状态识别
Bika LIMS 开源LIMS集—— SENAITE的使用(分析/测试、方法)
威纶通触摸屏制作自定义欢迎界面的几种方法介绍
Project Manager: Not bad!The SSO single sign-on code is written, and the sequence diagram is also drawn?
leetcode134. 加油站
手摸手写一个互联网黑话生成器
如何使用MISRA改进嵌入式编程
EA&UML日拱一卒-活动图::Feature和StuctualFeature
Redis-NoSql
解决:Parameter 0 of method ribbonServerList in com.alibaba.cloud.nacos.ribbon.NacosRibbonClientConfigu
What is the difference between the legendary server GOM engine and the GEE engine?
十种实现延迟任务的方案
PHP代码审计得这样由浅入深地学
力扣 206.反转链表--递归解决









