内部类的学习

内部类(inner class): 是一种声明在其他类内部的内嵌类型。 访问规则:可以访问外类中的成员(包括 private 修饰的)----->不用创建外部类的对象 直接使用。

 

 

 外部类(outer class)要访问内部类(inner class)成员时,必须建立内部类的对象,通过对象进行调用。

 

创建内部类对象:: Outer.Inner in=new Outer().new Inner();

 解释:Outer.Inner :    外部类.内部类------->Outer.Inner in,    也就是创建对象  in                   new Outer().new Inner() :外部类对象.内部类对象------->对象。

知识点:之所以内部类可以直接访问外部类中的成员,因为内部类中持有一个外部类的引用: “Outer.this.___” 这里的“this”是Outer 的。

内部类在成员位置上,可以被成员修饰符所修饰,例如:private(也只有这种情况下 类可以修饰成私有) static。,当修饰为static时只能直接访问外部类的static成员了。

 

但是,若在局部成员位置上,:1、不能别这些所修饰。可以直接访问外部类中的成员,但不可以访问其所在的局部中局部变量,除非将此变量修饰为"final".。

那么其他外部类如何访问别的类中的“静态内部类”呢? Outer.Inner._成员 因为此时内部类是静态的,所以可以直接使用外部类的类名调用,不用创建对象。

若访问Inner中的非静态方法: new Outer.Inner().方法名(); 此时需要建立对象调用。

 

注意点:当内部类中定义静态成员时,那么该内部类必须是静态的。 当外部类中的静态方法访问该内部类时,此内部类也应是静态的。

内部类的应用:当描述事物时,事物的内部还有事物时,该事物用内部类描述。此时,内部事物可以使用外部事物中的内容。

 

 

匿名内部类:匿名内部类其实就是内部类的简写格式         

定义匿名内部类的前提: 该内部类必须是继承一个类或者实现接口。

匿名内部类的格式:先是一个有继承或实现接口的子类:

class Inner extends 父类 //定义子类

{

void show()

 {abcde}

}

 New Inner().show(); //再调用函数

 

 

以上简写成:

new Outer()

{

      void show ()

     { abckkde}

}.show();

 

 “.show()”之前 蓝色部分其实就是 new Inner(),  直接带有对象体,一个子类对象。

为什么是子类? 因为只有之类才能复写父类中的show()方法。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值