Course Note: 内部类

内部类含义

好处:不需要额外新建一个类文件

成员内部类定义

 

注意:内用外,随意访问。但外用内需要借助内部类的对象。

如上图,在内部类里 可以直接访问外部类的成员变量。

 

成员内部类的使用

1.间接方法: 在外部类方法中使用内部类,然后mainclass只调用外部类的方法

在外部类的方法里 对内部类进行实例化,然后访问内部类方法。

之后再在主class里 实例化外部类 ,然后通过调用外部类方法 间接调用内部类。

 

2.直接方法:

通常我们实例化类是: 类名称 对象名 = new 类名称();

在这里我们需要通过 外部类名称.内部类名称 对象名 = new 外部类名称(). new 内部类名称();

不要忘了 类名称() 其实是在调用构造方法。

然后调用内部类方法:

 

 

内部类与外部类的重名问题

当两者的成员变量重名时,

在内部类访问外部类的成员变量:

外部类名称. this. 外部类成员变量名

 

局部内部类定义

指内部类定义在一个方法的内部。“局部”意味着 只有该类所在的方法才能使用它,出了方法外面就不能被使用了。

调用该内部类所在方法就能调用该内部类。

注意,因为局部内部类出了所在方法就不能被使用,因此不能再方法外部访问局部内部类。

因此需要在内部类所在方法里,实例化内部类,由其所在方法对内部类进行使用。然后我们在外部调用这个方法。

然后再主class实例化外部类后 调用内部类所在方法

 

外部类、成员内部类、局部内部类 使用的权限修饰符

因为局部内部类只有方法自己才能用,所以不加权限修饰符。

 

匿名内部类(即局部内部类的匿名内部类,使用的最多)

大括号里的部分即为匿名内部类本体。

例子(接口为MyInterface )

与之相比,如果按正常套路使用接口,我们需要一个实现类implements接口,然后再实例化该实现类来使用:

因为实现类作为一个类会单独产生一个class文件,若实现类只需要使用唯一一次,就可以考虑使用匿名内部类来替代(不需要借助实现类)。

 

匿名内部类注意事项

注意上面的方法是匿名内部类,匿名的是类名称,不是对象名称。

如果想匿名对象,就改为(只new 接口)

此时整体作为一个对象,再大括号后面使用.来调用方法(此时只能调用一个方法,且该方法只能调用一次)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值