博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java内部类概念
阅读量:5279 次
发布时间:2019-06-14

本文共 1538 字,大约阅读时间需要 5 分钟。

一、成员内部类 作为外部类的成员存在的类,则称之为成员内部类
1 public class OuterClass{2      public class InnerClass{3           4      }      5 }
成员内部类样例

成员内部类具有如下特征:

1.可以访问外部类所有的成员,包括被声明为私有(private)的;

2.可以使用任何访问权限修饰符,包括protected和private;

3.不允许在外部类以外的其他类中创建内部类对象,如果一定需要被其它类访问,应把内部类的对象声明声明为外部类的属性,

然后在其他类中创建内部类对象,在通过该属性进行访问。

 

  二、局部内部类

  存在于外部类的方法中的类,称之为局部内部类,其定位与局部变量相似

1 public class OuterClass{2     public void  method(){3          class InnerClass{4          5         }  6     }7 }
局部内部类样例

局部内部类有如下特征:

1.不允许使用任何访问权限修饰符;

2.创建局部内部类的对象的语法,必须在声明局部内部类之后;

3.可以访问外部类所有的成员,包括被声明为私有(private)的;

4.不能访问任何局部变量或方法的参数,除非这些局部变量或参数使用final修饰。

 

  三、静态内部类

  使用static修饰的成员内部类,称之为静态内部类

1 public class OuterClass{2     public static Class InnerClass{3     4     }      5 }
静态内部类样例

静态内部类有如下特征:

1.不可以访问外部类中非static成员;

2.可以使用任何访问权限修饰符,包括protected和private;

3.可以在其它类中直接创建静态内部类的对象,语法格式为:

1 外部类.内部类 对象名 = new 外部类.内部类();
其他类中创建静态内部类对象

 

  四、匿名内部类

  匿名内部类表现为:没有类的声明语法、直接创建已知类的子类对象或已知接口的实现类对象

1 public class OuterClass{ 2     public int id = new Object(){ 3          public int calculate(){ 4               return hashCode() * 100; 5          }       6     }.calculate();     7      8      public void run(){ 9           new Object(){10                 public void helloworld(){11                       System.out.println("helloworld ! ! !");12                 }13           }.helloworld();14      }    15 }
匿名内部类样例

 

 

  内部类的应用

  内部类一般应用于以下开发需求:

1.将相关类组织在一起,避免命名的混淆;

2.由于成员内部类可以使用所有访问权限修饰符,则可以实现更深层次的隐藏;

3.实现多继承;

4.更充分地利用外部类的成员,完成特有的业务逻辑,且该部分业务逻辑的实现不符合其它任意一个类的需求。

转载于:https://www.cnblogs.com/zhncnblogs/p/6222750.html

你可能感兴趣的文章
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
国外常见互联网盈利创新模式
查看>>
android:scaleType属性
查看>>
shell脚本
查看>>
Upload Image to .NET Core 2.1 API
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
Linux中防火墙centos
查看>>
[JS]递归对象或数组
查看>>
linux sed命令
查看>>
程序存储问题
查看>>
优雅地书写回调——Promise
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
css & input type & search icon
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>