Java内部类

一.成员内部类
①定义: 把一个类当做普通成员变量那样定义。
class OuterClass{
int a=0;
class InnerClass{
int b=1;
void test(){
System.out.println(a);
}
}
}
//主方法中:
OuterClass out=new OuterClass();
OuterClass.InnerClass inner=out.new InnerClass();
②成员内部类的使用:
a. 内部类的票的类型有固定格式为 外部类名称+”.”+内部类名称,构造方法为 new +
内部类类名+”()”;
b. 如果要生成内部类的实例,需要依靠外部类的实例.
c. 内部类会持有外部类类型的一张票(注意课上所演示的内存示意图),可以利用所持有的
这张外部类类型的票直接访问外部类的成员变量和成员方法(包括静态成员变量和成员
方法)
d. 外部类不可以直接访问到内部类的任何成员变量和成员方法
e. 注意内部类中两种不同的 this 所指向的内存区别
f. 实际的编译会生成两个 class 文件,分别为 OuterClass.class 和 OuterrClass$InnerClass.class
g. 内部类里面不能定义静态的成员变量或者成员方法
(完全掌握的标准 是你可以将内部类提出来写 并且达到内部类的效果,这里需要的基
础是大家对 this 关键字作为凭证的用法完全掌握)
二.静态内部类
①定义: 把一个类当做静态成员变量那样定义。
class OuterClass{
static int a=0;
void test(){
System.out.println(OutClass.InnerClass.b);
}
static class InnerClass{
static int b=1;
void test(){
System.out.println(a);
}
}
}
②静态内部类的使用:
a.内部类的票的类型有固定格式为 外部类名称+”.”+内部类名称
b.如果要生成内部类的实例,不需要依靠外部类的实例
c. 内部类只可以直接访问到外部类的静态成员变量和静态成员方法
d. 外部类不可以直接访问到内部类的任何成员变量和成员方法(包括静态)
d. 实际的编译会生成两个 class 文件,分别为 OuterClass.class 和 OuterrClass$InnerClass.class
三.匿名内部类
①出现了一个实例,这个实例并不属于我们所编写的任何模板,并且都伴随着向上转型的
过程
②代码举例:
③在①中出现的实例若出现在成员方法中或是成员变量中,则这个实例实际上可以转换
成成员内部类的一个实例,则这个实例拥有一个外部类实例的权限,具有成员内部类
的所有特点。如果出现在静态方法中或静态成员变量中,则这个实例实际上可以转换
成静态内部类的一个实例,则具有静态内部类的所有特点。
四.局部类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值