1. package innerClass;
  2. /**
  3. * 特点
  4. * 1:增强封装性,通过把内部类隐藏在外部类的里面,使得其他类不能访问外部类。
  5. * 2:增强可维护性。
  6. * 3:内部类可以访问外部的成员。
  7. * @author Administrator
  8. *
  9. */
  10. class InnerClassDemo {
  11. String str="Out";
  12. static String str1="static";
  13. public static void outstaticStr() {
  14. System.out.println();
  15. }
  16. public void outStr() {
  17. StaticInner staticInner=new StaticInner();
  18. staticInner.staticStr();
  19. String c= StaticInner.strInnerSt;
  20. String InnerC=Inner.InnerStaticelements;
  21. System.out.println(str);
  22. Inner inner =new Inner();
  23. System.out.println(inner.str);
  24.  
  25. inner.innerStr();
  26. }
  27. /**
  28. * 实例内部类
  29. * @author Administrator
  30. *1:实例内部类是对象的内部类,把它当成对象看待。不能用static修饰
  31. *2:实例内部类存在一个外部类的引用
  32. *3: 实例内部类可以直接访问外部类的成员 用外部类.this的引用访问外部类 ,内部类静态成员直接用外部类.成员访问。
  33. *4;外部类要创建一个内部类的对象,然后再访问内部类的成员。静态成员直接用内部类.成员。
  34. *5:实例内部类的静态成员必须是fianl
  35. */
  36. public class Inner{
  37. String str="inner";
  38. static final String InnerStaticelements="staticInner";
  39.  
  40. public void innerStr() {
  41. InnerClassDemo.outstaticStr();
  42. System.out.println(this.str);
  43. System.out.println(InnerClassDemo.this.str);
  44.  
  45. }
  46. }
  47. /**
  48. *
  49. * @author Administrator
  50. * 内部类加上static就是静态内部类
  51. * 静态内部类没有在堆开辟一个空间存放执行外部类的引用。
  52. * 静态内部类可以直接访问外部类的静态成员(不需要外部类.外部类成员),通过new 外部类访问外部类的非静态类成员。
  53. * 静态内部类可以创建非静态的成员。
  54. *外部类可以通过new 静态内部类的对象访问内部类的非静态成员,通过静态内部类.成员的方式访问内部类静态成员
  55. */
  56. static class StaticInner{
  57. static String strInnerSt="rewre";
  58. String srt="staticInner";
  59. public void staticStr() {
  60. System.out.println(new InnerClassDemo().str);
  61. System.out.println(str1);
  62. }
  63. }
  64. /**
  65. * 局部内部类不能设置访问权限private public 等等
  66. * 局部内部类定义在方法,使用也在方法中
  67. * 局部内部类不能包含静态变量
  68. * 通过访问外部的成员,静态的用外部.成员的方式,普通的就是用new 外部内的方式。
  69. * 外部类不能访问内部类成员
  70. */
  71. public void showLocalInner() {
  72. class LocalInner{
  73. String local="localInner";
  74. public void localMethods(){
  75. System.out.println(str);
  76. }
  77.  
  78. }
  79. System.out.println(new LocalInner().local);
  80. localMethods();
  81. }
  82. /**
  83. * 匿名类 一般使用在事件开发中,安卓,GUI开发中,只使用一次,。
  84. * 可以非静态成员通过new的外部类的方式访问外部类的成员,静态成员则通过外部类.的方式访问外部类静态成员
  85. *
  86. */
  87. Runnable run =new Runnable() {
  88.  
  89. @Override
  90. public void run() {
  91. // TODO Auto-generated method stub
  92. System.out.println(str);
  93.  
  94. }
  95. };
  96.  
  97. }
  1. package innerClass;
  2.  
  3. import innerClass.InnerClassDemo.Inner;
  4.  
  5. public class TestInnerClass {
  6. public static void main(String[] args) {
  7. InnerClassDemo.Inner inner=new InnerClassDemo().new Inner();//其他类访问实例内部类的方式
  8. inner.innerStr();
  9.  
  10. System.out.println(InnerClassDemo.StaticInner.strInnerSt);//在外部可以通过 外部类.内部类.内部类成员访问内部类的静态成员
  11.  
  12. }
  13. }

java内部类简单用法的更多相关文章

  1. [Java] 内部类的用法

    package test.file; import java.io.File; import java.io.FilenameFilter; /** * 内部类的使用 * @author Frost. ...

  2. java 内部类简单总结

    在java中,一个类可以放在另一个类的内部,称之为内部类,相对而言,包含它的类称之为外部类.不过对于Java虚拟机而言,它是不知道内部类这回事的, 每个内部类最后都会被编译为一个独立的类,生成一个独立 ...

  3. java 内部类(简单使用)

    什么是内部类 1.内部类是指在一个外部类的内部再定义一个类. 2.内部类作为外部类的一个成员,依附于外部类而存在. 3.内部类可为静态,可用protected和private修饰(而外部类只能使用pu ...

  4. Java 正则表达式 简单用法

    正则表达式的具体写法网上有很多了,这里只记录在 Java 中怎么使用. java.util.regex.Matcher.java.util.regex.Pattern 主要有: String.matc ...

  5. Java 实现简单的 Socket 通信

    Java socket 封装了传输层的实现细节,开发人员可以基于 socket 实现应用层.本文介绍了 Java socket 简单用法. 1. 传输层协议 传输层包含了两种协议,分别是 TCP (T ...

  6. 简单谈一谈Java内部类的使用原因

    使用内部类的原因 学习总得知其所以然,前面的一篇文章中我有提到过关于java内部类的几种用法以及一些示例,但是不明白内部类具体可以做什么,显然学习起来很渺茫,今天的文章简单说一说使用内部类的几个原因, ...

  7. JAVA使用Logback发送日志到控制台、文件、ELK的最简单用法

    一.简述 本文讲JAVA使用Logback发送日志到控制台.文件.ELK的最简单用法. 二.教程 1.新建pom.xml项目引入下列依赖: <dependencies> <!--Be ...

  8. java项目中ehcache缓存最简单用法

      java项目中ehcache缓存最简单用法: 1.下载ehcache-core-2.4.3.jar复制到项目的lib目录下 2.新建ehcache.xml文件,放置在项目src目录下的resour ...

  9. JAVA 内部类 (一)

    可将一个类定义置入另一个类定义中.这就叫作“内部类”.内部类对我们非常有用,因为利用它可对那些逻辑上相互联系的类进行分组,并可控制一个类在另一个类里的“可见性”.然而,我们必须认识到内部类与以前讲述的 ...

随机推荐

  1. 最长公共子串(Longest common substring)

    问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子串.(子串中的字符要求连续) 这道题和最长公共 ...

  2. C. Jury Marks 思维

    C. Jury Marks 这个题目虽然是只有1600,但是还是挺思维的. 有点难想. 应该可以比较快的推出的是这个肯定和前缀和有关, x x+a1 x+a1+a2 x+a1+a2+a3... x+s ...

  3. 数位dp H - F(x) HDU - 4734

    http://acm.hdu.edu.cn/showproblem.php?pid=4734 一般数位dp表示的是数的性质,这个题目也是一样,但是我们求出来的是一个函数的值,怎么把这个值转化成一类数, ...

  4. JavaWebCase

    目录 案例:用户登录 用户登录案例需求 分析 开发步骤 创建项目 创建数据库环境 创建包 com.my.domain,创建类User 创建包 com.my.dao,创建类UsesrDao,提供logi ...

  5. Node.js中模块加载机制

    1.模块查找规则-当模块拥有路径但没有后缀时:(require(‘./find’)) require方法根据模块路径查找模块,如果是完整路径,直接引入模块: 如果模块后缀省略,先找同名JS文件,再找同 ...

  6. 【FPGA篇章七】FPGA系统任务:详述常用的一些系统函数以及使用方法

    欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 系统任务和系统函数是Verilog标准的一部分,都以字符"$"为开头.系统任务可划分为六类,下面分别给出一些常用任务的用 ...

  7. C++中的隐式转换和explicit

    隐式转换 c++中的数据类型转换分为隐式转换和显示转换: 显示转换即使用static_cast等方法进行转换,相关内容请参考 <C++数据类型转换>: 隐式转换则是编译器完成的,如,boo ...

  8. Facebook 开源微光效果 Shimmer

    我的引言 晚上好,我是吴小龙同学,我的公众号「一分钟 GitHub」会推荐 GitHub 上好玩的项目,挖掘开源的价值,欢迎关注我. 今天要推荐的是 Facebook 开源的闪光效果:Shimmer, ...

  9. 【Hadoop离线基础总结】MapReduce 社交粉丝数据分析 求出哪些人两两之间有共同好友,及他俩的共同好友都有谁?

    MapReduce 社交粉丝数据分析 求出哪些人两两之间有共同好友,及他俩的共同好友都有谁? 用户及好友数据 A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E ...

  10. Qt子窗口设置背景色只能应用到其中的部件的问题

    问题描述:设置父窗口后子窗口会嵌在父窗口中,背景变透明,此时用qss设置子窗口的背景色发现只应用到的子窗口的控件中,除控件外的地方并没有应用到背景色. 解决方法:不使用qss设置背景色,重写paint ...