内部类(Java)

内部类(Java),第1张

部类(Java) 内部类 内部类的分类

1.成员内部类

2.静态内部类

3.局部内部类

4.匿名内部类

什么是内部类 概念:

在一个类的内部再定义一个完整的类

  class Body{
      class Head{
          
      }
  }//head属于body的一部分
特点:

​ 1.编译之后内部类可生成独立的字节码文件

​ 2.内部类可以直接访问外部类的私有成员,不破外外部类的封装性

​ 3.可为外部类提供必要的内部功能组件(body和head)

成员内部类

在类的内部定义,与实例变量、实例方法同级别的类

(与类中的变量,方法是一个级别的,也可以添加,define,protected,private,public这些修饰符,不过只能有一个public修饰的内部类)

作为外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象(先创建外部类对象,然后创建内部类对象)

 

 

外部类类名.内部类类名 内部类对象名 = 外部类对象名.new 内部类类名();

简单创建对象的方法:

  
  Outer11.Inner1 c = new Outer11().new Inner1();

外部类类名.内部类类名 内部类对象 = new 外部类类名().new 内部类类名();

注意:

1.当内部类和外部类有重名的属性的时候,会优先访问内部类属性

在这种情况下想调用外部类的属性,需要在调用的外部类的属性前加上 外部类类名.this.前缀

  System.out.println(Outer.this.name);

2.成员内部类,不能定义静态成员

可以包含静态常量

静态内部类

不依赖外部类对象,可直接创建或通过类名访问,可声明静态成员(相当于一个外部类)

作用:给外部类提供一些功能

 

 

局部内部类

和局部变量一样,定义在方法中,作用范围是外部类的方法,和局部变量是一个级别的

 

 

如果想调用局部内部类中的方法show2,需要在方法中创建对象,然后调用外部类的show方法

 

访问局部变量,这个变量必须是常量fianl 在JDK1.7以前,在JDK1.8以后自动添加了fianl

局部内部类中也不能使用静态变量,但是可以使用静态常量

匿名内部类

没有类名的局部内部类(一切特征和局部内部类相同)

必须继承一个父类或者一个接口

局部内部类只使用一次,就不再使用了,所以为了简化局部内部类的写法,有了匿名内部类

这里是局部内部类的使用方法

 

这里是匿名内部类的使用方法

 

定义类,实现类,创建对象的语法合并,只能创建一个该类的对象

匿名内部类是有名字的,只不过是JDK自动生成的

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716325.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存