内部类三连击:

《内部类详解————匿名内部类》

《内部类详解————局部内部类》

《内部类详解————静态内部类》

定义

静态内部类,又叫静态嵌套类或嵌套类。是使用static关键字修饰的内部类

静态内部类可以用 private 修饰,这非常符合良好的OOM设计。并且由于嵌套类被认为是外部类的一部分,所以不存在产生不可见问题。——《数据结构与算法分析—Java语言描述》p50

书写形式

一般的书写形式:

public class Outter {/** 嵌套类,public等四种访问修饰符均可修饰*/public static class Inner {/** 嵌套类内部*/}
}

接口中的书写形式:

public interface OutInterface {/** 嵌套类,在接口中定义的任何类都自动的是public和static的,因此这两个关键字都可以省略*/class Inner {public void print() {System.out.println("print()");}}
}

嵌套类的语法规则

规则一:不能从嵌套类中访问外部类的非静态成员。这一点与Java基础语法中对静态非静态语法的相关描述完全一致。

规则二:与普通内部类不同,嵌套类实例化不需要依赖外部类对象,而普通的内部类对象需要与外部类的对象有一种绑定关系。

public class Outter {/** 嵌套类*/public static class Inner {}public static void main(String[] args) {Outter.Inner inner = new Inner();}
}

规则三:与普通内部类的区别如下:

普通内部类只能包含非静态变量非静态方法非嵌套类

静态嵌套类可以包含静态和非静态变量静态和非静态方法静态和普通内部类

注意:“嵌套类中包含”与规则一中的“嵌套类中访问”是不同的含义,区别在于“访问”是嵌套类中调用嵌套类之外定义的成员,而“包含”则表示在嵌套类中定义)

规则四:嵌套类可以定义在接口中,并作为接口的一部分来使用。

《Java编程思想》(第四版,P203)

如果你想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用,那么使用接口内部的嵌套类会显得很方便。

代码实例:

/** 接口*/
public interface OutInterface {void method_1();void method_2();/** 嵌套类*/class Inner {public void print() {System.out.println("print something...");}}
}
/** 实现类 */
public class OutInterfaceImpl implements OutInterface {private OutInterface.Inner inner = new Inner();@Overridepublic void method_1() {inner.print();}@Overridepublic void method_2() {inner.print();}public static void main(String[] args) {OutInterface oif = new OutInterfaceImpl();oif.method_1();oif.method_2();}
}

输出结果:

print something...
print something...

规则五:静态内部类不会在外部类加载时也执行类加载。这一点可以应用于单例模式。

总之,静态内部类可以具有一个普通类的所有特性,本质上他们并无二致,而且还可以通过访问修饰符如private等,来控制访问权限。

综上,就是静态嵌套类的详细使用,其中需要注意的问题,已经列在规则中,经过博主实操,大概也就这些内容,如有疑问和建议,欢迎文末留言。:)

内部类详解————静态内部类相关推荐

  1. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  2. 接口与继承系列教材 (十)- Java 内部类详解

    接口与继承系列教材 (十)- Java 内部类详解 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤1:非静态内部类 步骤2:静态内部类 步骤3:匿名类 步骤4:本地类 步骤5:在匿名 ...

  3. Java修炼——内部类详解

    内部类详解 定义:将一个类定义在另一个类的内部,该类就称为内部类 类中定义的内部类特点: 内部类作为外部类的成员,可以直接访问外部类的成员 (包括 private 成员),反之则不行. 内部类做为外部 ...

  4. 内部类(四种内部类详解)

    == = = = = = = 内部类(四种内部类详解)= = = = = = = == 一.基本介绍:一个类的内部又完整的嵌套了另一个类结构.被嵌套的类称为内部类(inner class),嵌套其他类 ...

  5. 内部类详解————局部内部类

    内部类三连击: <内部类详解----匿名内部类> <内部类详解----局部内部类> <内部类详解----静态嵌套类> 定义 在方法或某个作用域内的内部类,称为局部内 ...

  6. 内部类详解————匿名内部类

    内部类三连击: <内部类详解----匿名内部类> <内部类详解----局部内部类> <内部类详解----静态嵌套类> 应用场景 由于匿名内部类不利于代码的重用,因此 ...

  7. java类修饰词和内部类详解

    java类修饰词和内部类详解 控制属性: 同一类内     同一包内      子类     所有类 public            可             可         可       ...

  8. java 函数内部类_java 内部类详解 转

    classOuter {classInner { } } (二) 内部类的访问规则 ​ A:可以直接访问外部类的成员,包括私有 ​ B:外部类要想访问内部类成员,必须创建对象 (三) 内部类的分类 ​ ...

  9. Java提高篇 —— Java内部类详解

    一.简介 内部类是一个非常有用的特性但又比较难理解使用的特性. 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. public class OuterClass {privat ...

最新文章

  1. 最全19000+国外AE模板合集包
  2. 区块链BaaS云服务(28)TOP Network 之全分片主链(Layer-1)
  3. a标签右侧尖括号_没想到贴线缆标签有很多讲究和技巧?一般人真不知道
  4. mysql数据库发布到web服务器上_web应用发布至服务器
  5. python代码生成可执行程序_Python—脚本程序生成exe可执行程序(pyinstaller)
  6. Taro+react开发(73):Taro.createSelectorQuery
  7. Inversion of Control(控制反转)之 Dependency Injection(依赖注入)
  8. 一文解决样本不均衡(全)
  9. 本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制、扭矩分配
  10. 原码,补码,反码概念和计算方法详解
  11. 用友NC合同编码自定义
  12. python基础随机数模块生成银行卡密码
  13. 图片裁切批处理_图片批量处理 如何批量将图片裁剪成一样的大小?按照一定的比例快速裁剪多张照片...
  14. 当BTC大空头遇上PlusToken,投资竟然成为一门玄学?
  15. 联通电信校园促销加码 策略更隐蔽
  16. 今天,王坚正式把“杭州城市大脑”作为礼物献给世界
  17. SpringBoot基础学习之整合Swagger框架(上篇)
  18. 用程序编写计算公式的高次方程数字计算机
  19. 7-3 重要的话说三遍 (5分)
  20. 网页点击button进行复制文本实现

热门文章

  1. c#中的long类型示例_C#中带示例的带符号字节数组
  2. ThreadLocal中的3个大坑,内存泄露都是小儿科!
  3. 万字详解|手撕 9大排序算法!
  4. MS SQL查询库、表、列数据结构信息汇总
  5. Oracle笔记:数据库启动的三个阶段
  6. zoj 1091 Knight Moves
  7. zoj 1006 do the untwist
  8. 重置mariadb密码
  9. python多元函数求极小值_使用遗传算法求二元函数的最小值
  10. 东北农业大学考研计算机大纲,东北农业大学(专业学位)计算机技术研究生考试科目和考研参考书目...