Java内部类和匿名内部类的用法说明 Java内部类和匿名内部类是Java编程语言中两个重要的概念,它们在Java编程中扮演着非常重要的角色。内部类可以访问外部类的成员变量和方法,而匿名内部类则是内部类的一种特殊形式,下面我们将详细介绍Java内部类和匿名内部类的用法说明。 一、内部类 内部类是指在一个类中定义的另一个类,它可以访问外部类的成员变量和方法。内部类可以在外部类的成员方法中实例化,并与外部类建立关系。 1. 内部类的同名方法 内部类可以调用外部类的方法,如果内部类有同名方法必须使用"OuterClass.this.MethodName()"格式调用,否则将出现编译错误。 例如: ```java package innerclass; public class OuterClass { private void outerMethod() { System.out.println("It's Method of OuterClass"); } public static void main(String[] args) { OuterClass t = new OuterClass(); OuterClass.Innerclass in = t.new Innerclass(); in.innerMethod(); } class Innerclass { public void innerMethod() { OuterClass.this.outerMethod();// 内部类成员方法与外部类成员方法同名时,使用this调用外部类的方法 outerMethod();// 内部类没有同名方法时执行外部类的方法 } private void outerMethod() { System.out.println("It's Method of Innerclass"); } } } ``` 输出结果为: ``` It's Method of OuterClass It's Method of Innerclass ``` 2. 内部类访问外部类的变量 内部类访问外部类的变量必须声明为final方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。 例如: ```java public class OuterClass { int num1 = 0;// 成员变量 private void outerMethod() { int num2 = 0;// 方法内的局部变量 class Innerclass_1 { public void innerMethod() { System.out.println(num1);// 方法中内部类的方法,可以正常访问外部类的成员变量 System.out.println(num2);// JDK1.8以前,方法中内部类的方法,不能直接访问外部类的方法的局部变量,必须声明为final } } } } ``` 3. 内部类的实例化 内部类实例化不同于普通类,普通类可以在任意需要的时候实例化,而内部类必须在外层类实例化以后方可实例化,并与外部类建立关系。 例如: ```java private void outerMethod() { System.out.println("It's Method of OuterClass"); Innerclass in = new Innerclass();// 在外部类的outerMethod方法中实例化内部类是可以的 in.innerMethod(); } ``` 二、匿名内部类 匿名内部类是一种特殊的内部类,它没有名称,也不需要单独定义,可以在需要的时候直接实例化。 例如: ```java public class OuterClass { public static void main(String[] args) { OuterClass t = new OuterClass(); AbstractClass ac = new AbstractClass() { public void abstractMethod() { System.out.println("It's Method of Anonymous Class"); } }; ac.abstractMethod(); } } ``` 输出结果为: ``` It's Method of Anonymous Class ``` Java内部类和匿名内部类是Java编程语言中两个非常重要的概念,它们在Java编程中扮演着非常重要的角色。了解和掌握它们的用法可以帮助开发者更好地编写Java程序。






















剩余9页未读,继续阅读


- 粉丝: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于Python Tkinter GUI库的随机选择器.zip
- (源码)基于 PHP 的宝塔服务器状态监控系统.zip
- (源码)基于Arduino的BeeBot机器人控制系统.zip
- (源码)基于Atmel8266MCU的闹钟系统.zip
- 一个flask+jQuery的项目,实现文本相似度查询.作为Python必修课和Python选修课大作业
- (源码)基于Nodered和Arduino的气象站监测系统.zip
- (源码)基于Python和Flutter的智能家居自动化管理系统.zip
- (源码)基于Python的微信聊天机器人.zip
- 北上广成沈五城市PM2.5分析 中国农业大学大数据(二学位)Python程序设计课程作业
- 北京大学暑期学校:Python语言基础及应用(Python Programming and Application)小组作业
- 大三上,编译原理大作业,函数绘图语言解释器,Function Mapping Language Interpreter,Python实现
- Confluence实战指南:提升团队协作效能
- 南开大学《数据库原理》课程大作业,基于mysql和python实现的选课系统
- 多媒体大作业,一个基于 Electron-vue + Python 的图像转动画应用
- Python大作业,KTV点歌系统,支持歌曲增删改查,歌词显示
- 数据库的大作业 因为c++太麻烦了 所以使用Python实现


