A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心是你仰望的城 中级黑马   /  2014-2-26 19:19  /  1084 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请教内部类“放在外部类的方法中”和“放在成员位置”的区别?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览
一个是局部内部类,一个是正常的内部类(分为静态和非静态)
主要区别是局部内部类必须在方法内创建一个对象并实现其功能。另外想要调用外部方法的局部变量,必须用final修饰。
另外一个大区别是调用,不过这个和静态内部类,非静态内部类都不一样。
你这问题问的让人纠结

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
对内部类本身其实区别不大了,在哪都可以调用外部类的成员,成员内部类可以在外部类任意位置创建对象并调用其功能,成员内部类也可以在外部其他类创建对象,而局部内部类就只能在该局部区域创建对象了。总的说就是使用范围的大小有区别,当然还有一些小的格式方法的细节有些区别。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
放在外部类的方法中的参数列表中,又可以称做匿名内部类,没有名字的内部类,一般只用一次就可以用着种形式,通常方面名字的参数是一个接口或需要继承的父类的对象引用,此时就可以传入实现类具体格式
方法名(new 父类名(){定义子类的类名字或者覆盖父类的方法});
当方法匿名内部类要访问外部方法的变量,变量要加final,访问外部类的成员变量时候一般的访问方式是类名.this.变量。局部内部类跟匿名类相似,在方法体用的时候要创建局部内部类的对象

外部类不可以直接生成局部内部类的实例化,这保证了内部类对外是不可见的。要想使用局部内部类时,要先创建外部类的实例,调用局部内部类所在的方法
当是成员内部类时,实例化内部类时格式是;外部类名.内部类名 实例化名 = out.new 内部类名 外部类名.内部类名 实例化对象名 =  new  外部类名().new  内部类名()

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马