内部类
来源:互联网 发布:java第十版基础篇答案 编辑:程序博客网 时间:2024/06/05 02:05
在 Java 中,允许在一个类的内部定义类,这样的类称作内部类,这个内部类所在的类称作外部类。
根据内部类的位置、修饰符和定义的方式可分为成员内部类、静态内部类、方法内部类。
成员内部类
在一个类中,除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类。在成员内部类中可以访问外部类的所有成员。
Example.java 示例代码:
class Outer{ private int num = 4; //定义类的成员变量 //成员内部类 class Inner{ void show(){ //在成员内部类的方法中访问外部类的成员变量 System.out.println("num=" + num); } } //成员方法,该方法中访问内部类 public void test(){ Inner inner = new Inner(); inner.show(); }}public class Example{ public static void main(String[] args){ Outer outer = new Outer(); //创建外部类对象 outer.test(); //调用 test() 方法 }}
此代码,说明内部类可以在外部类中被使用,并能访问外部类的成员。
如果想通过外部类去访问内部类,则需要通过外部类对象去创建内部类对象,创建内部类对象的具体语法格式如下:
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
Example.java 示例代码:
public class Example{ public static void main(String[] args){ Outer.Inner inner = new Outer().new Inner(); //创建内部类对象 inner.show(); //调用 test() 方法 }}
注意: 如果内部类被声明为私有,外界将无法访问。
静态内部类
使用 static 关键字修饰一个成员内部类,该内部类被称作静态内部类,它可以在不创建外部类对象的情况下被实例化。
创建静态内部类对象的具体语法格式如下:
外部类名.内部类名 变量名 = new 外部类名.内部类名();
Example.java 示例代码:
class Outer{ private static int num = 6; //静态内部类 static class Inner{ void show(){ System.out.println("num=" + num); } }}class Example{ public static void main(String[] args){ Outer.Inner inner = new Outer.Inner(); //创建内部类对象 inner.show(); //调用内部类的方法 }}
注意:
1、在静态内部类中,只能访问外部类的静态成员。
2、在静态内部类中可以定义静态的成员,而在非静态的内部类中不允许定义静态的成员。例如下面的代码,编译会报错
class Outer{ class Inner{ static int num = 10; //不能定义静态成员,编译报错 void show(){ System.out.println("num=" + num); } }}
方法内部类
方法内部类是指在成员方法中定义的类,它只能在当前方法中被使用。
Example.java 示例代码:
class Outer{ private int num = 4; //定义成员变量 public void test(){ //内部类 class Inner{ void show(){ System.out.println("num=" + num); //访问外部类的成员变量 } } Inner in = new Inner(); //创建内部类对象 in.show(); //调用内部类的方法 }}public class Example{ public static void main(String[] args){ Ourter outer = new Outer(); //创建外部类对象 outer.test(); //调用 test() 方法 }}
在此代码中,由于 Inner 是方法内部类,因此程序只能在方法中创建该类的实例对象并调用 show() 方法。
阅读全文
0 0
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 数据库导出数据模型图
- 输入三个字符串,按由小到大的顺序输出
- Tensorflow基础知识
- Android事件分发机制(最简图解:两张图搞明白)
- 初步了解DeepLearning----《一天搞懂深度学习》
- 内部类
- 常用函数
- [BZOJ2588][Spoj10628]Count on a tree(树上主席树)
- jni开发注意事项
- Arcgis---this control requires an arcgis engine developer kit license
- 字符设备驱动、设备驱动模型、sysfs、平台设备驱动的关系 -----从需求的角度去理解Linux之三
- 3-6 静态数据成员与静态成员函数
- 文本数据挖掘之文本信息抽取
- 在Windows 10上卸载Oracle Database 12.2