java内部类学习总结

内部类学习总结


1.1.1内部类的分类

成员内部类、
局部内部类、
静态内部类、
匿名内部类(GUI中用到)

1.1.2成员内部类
   

内部类和外部类的实例变量可以共存。

在内部类中访问实例变量:this.属性

在内部类访问外部类的实例变量:外部类名.this.属性。

   
成员内部类的特点:
    1.内部类作为外部类的成员,可以访问外部类的私有成员或属性。

2.编译出现outer.classouter$inner.class两类。
    3
.成员内部类不能有静态属性和方法


Outer类实例化: Inner in = new Inner()

在外面:Outer.Inner in = new Outer().new Inner() ;


1.1.3局部内部类


在方法中定义的内部类称为局部内部类。

1.与局部变量类似,在局部内部类前不加修饰符publicprivate,其范围为定义它的代码块。

2.局部内部类不仅可以访问外部类实例变量,而且可以访问外部类的局部常量

3.在类外不可直接访问局部内部类(保证局部内部类对外是不可见的)。 在方法中才能调用其局部内部类。
4.方法里面实例化内部类,要在内部类定义之后

5.访问方法中的局部变量是,变量只能是final才能访问。
1.1.4静态内部类

静态内部类定义在类中,任何方法外,用static定义。

静态内部类只能访问外部类的静态成员。

 生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:

Outer.Inner in=new Outer.Inner()

而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。

Outer.this.xxxx是访问对象变量的。。。。。。。

 

Outer.xxx访问静态变量

1.1.5匿名内部类

匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。

类和方法里面都可以定义

IA被定义为接口。

IA I=new IA(){};

注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。

因其为局部内部类,那么局部内部类的所有限制都对其生效。

匿名内部类是唯一一种无构造方法类。 匿名内部类在编译的时候由系统自动起名Out$1.class。 如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。因匿名内部类无构造方法,所以其使用范围非常的有限。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值