内部类

内部类的概念:

在一个类(如:Outer类)内部的成员或局部位置定义一个类(如:Inner类),那么Inner类就称作Outer类的内部类。定义内部类的主要目的是方便内部类访问外部类中的内容。
内部类可以直接访问外部类中的内容,但是外部类想要访问内部类,却必须要建立内部类的对象。
内部类可以定义在外部类中的成员位置上,也可以定义在外部类中的局部位置上。当内部类被定义在局部位置上时,内部类只能自己所在的访问外部类的局部位置中被final修饰的局部变量。

内部类使用修饰符:

当内部类定义在外部类中的成员位置上,可以使用一些成员修饰符修饰,如:private、static

1.默认修饰符

public修饰符,或者不用权限修饰符的情况下创建内部类:

Outer.Inner inner = new Outer.newInner();

这种应用不多见,因为内部类之所以定义在内部就是为了封装。想要获取内部类对象通常都通过外部类的方法来获取。这样可以对内部类对象进行控制

2.私有修饰符。

通常内部类被封装并被私有化,因为封装性不让其他程序直接访问。

3.静态修饰符。

静态内部类有访问局限性,只能访问外部类中的静态成员。

对内部类的访问

对静态非私有内部类的访问:

Outer.Inner in = new Outer.Inner();

静态非私有内部类访问非静态成员:

Outer.Inner in = new Outer.Inner();
In.show();

静态非私有内部类访问静态成员:

Outer.Inner.show();

匿名内部类:

不需要定义对象名就可以使用的内部类,内部类的简化形式。定义后只用一次,匿名内部类其实就是一个匿名子类对象。定义匿名内部类的前提是内部类必须继承一个类或者实现接口

匿名内部类的使用场景:

当函数的参数是接口类型引用时,如果接口中的方法不超过3个。可以通过匿名内部类来完成参数的传递。

interface Inter{
       voidshow();
}

class Outer{
      //通过匿名内部类补足Outer类中的代码。
      public static Inter method(){
             //定义匿名内部类,实现了Inter接口
             return new Inter() implements Inter{
                    public void show(){}
             };
      }
}

class InnerClassDemo{
       publicstatic void main(String[] args) {
              Outer.method().show();
              //匿名内部类的对象作为方法的参数
              function (new Inter(){
                    public void show(){}
             });
      }
      public static void function(Inter in){
             in.show();
      }
}

Outer.method( )的含义:
Outer中有一个名称为method的静态方法
Outer.method( ).show( )的含义:
当Outer类调用静态的method方法进行运算,运算结束后 ,运算结果又调用了show方法,意味着:method( )方法运算完是一个Inter类型的对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值