内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类。
内部类是一个非常有用的特性,它允许你吧一些逻辑相关的类组织在一起,并控制内部类的可视性。
创建内部类
创建内部类就是把类的定义置于外围类的里面
public class Outer{
class inner{
private int i=11;
public int value(){
return i;
}
}
}
内部类的访问规则
1:内部类可以直接访问外部类中的成员,包括私有
2:外部类要访问内部类,必须建立内部类对象
代码示例:
Outer.Inner in=newOuter().new Inner();//用到极少
in.method();
3:内部类成员和外部类成员对象类型和名称相同
内部类之所以能够访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式是Outer.this
class Outer{
private int x=3;
class Inner{
void function(){
int x=6;
System.out.println("inner:"+this.x);//打印的值为6
System.out.println("outer:"+Outer.this.x);//打印的值位3
}
}
}
4:当内部类定义在外部类的乘员位置上,而且非私有,可以直接建立内部类对象
格式 外部类名.内部类名 变量名=外部类对象.内部类对象;
5:当内部类在乘员位置上,就可以被成员修饰符所修饰
比如:private:将内部类在外部类中进行封装
内部类可以被static修饰:内部类就具备了static的特性,当内部类被static修饰后,只能访问外部类中的静态成员变量了
静态内部类示例class Outer{
class Outer{
private static int x=3;
static class Inner{
void function(){
System.out.println(x);//打印的值为3
}
}
}
new Outer.Inner().function();//内部类对象调用function
new Outer.Inner.function();//这个是function为static的情况下
PS:当内部类中定义了静态成员,该内部类必须是静态的
内部类定义在局部时,不可以被成员修饰符修饰,可以直接访问外部类中的成员,因为还持有外部类的引用,但是不可以访问他所在的局部中的变量,只能访问被final修饰的局部变量
匿名内部类:
1 匿名内部类其实就是内部类的简写格式
定义匿名内部类的前提内部类必须是继承一个类或者实现接口
//没有简化前
class ABSDemo{
abstract void show();
}
class Outer{
int x=3;
class Inner extends ABSDemo{
void show(){
System.out.println(x);
}
}
}
分享到:
相关推荐
2013黑马训练营全套net视频 30G 网盘下载
黑马训练营.net第高清完整版版74天
黑马程序员——Android移动开发源码
黑马训练营.net第12期74天完整版(高清绝密版)
该系列视频是黑马训练营.Net学习视频,仅供大家分享。。
黑马训练营红孩子商城APP完整源码(客户端和服务端) 亲测可用 注意改IP
黑马训练营49期javaEE 培训视频,高清视频,配套资料齐全。 课程目录 01-JavaSE知识(学习27天) 02-Web前端知识(学习5天) 03-MySql数据库与JDBC(学习3天) 04-JavaWeb知识(学习12天) 05-JavaWeb企业实战项目(学习6天)...
自己写的作业,没有完成!打印100次“欢迎您来黑马训练营学习”
通达信指标公式源码捕捉大黑马的好指标——黑马柱.doc
黑马程序员训练营基础测试 ios ios自荐信模板和iosexam
黑马软件训练营.NET全套教学视频,仅需一个积分,欢迎下载。
黑马程序员训练营基础测试,北京中关村黑马程序员的基础测试试题,随机产生
黑马程序员训练营CSDN创始人 蒋涛2010-12-09
冒泡代码 黑马程序员,2月3号开学,努力呀,yy
8. 黑马旅游网——旅游线路的详情展示-附件资源
黑马程序员入学Java知识——精华总结
kotlin的学习, kotlin非空判断 字符串 四种函数表达式
中关村“黑马程序员“训练营整理的java就业面试题宝典
洗护行业的“黑马”——干衣机市场发展趋势解读.pdf