JAVA静态和非静态内部类

JAVA静态和非静态内部类 

一直对java的静态和非静态内部类的东东理解不清楚,今天测试了一下,下面把测试结果记录一下,加深印象。用于以后查找。 
直接上代码。 
Java代码 
  1. package com.test.xml;  
  2.   
  3. /** 
  4.  * @author <a href="mailto:dq201@126.com">du.qiang</a> 
  5.  * @version $Revision 1.1 $ 2010-6-23 上午06:48:28 
  6.  */  
  7. public class OutClassTest {  
  8.     static int a;  
  9.   
  10.     int b;  
  11.   
  12.     public static void test() {  
  13.         System.out.println("outer class static function");  
  14.     }  
  15.   
  16.     public static void main(String[] args) {  
  17.         OutClassTest oc = new OutClassTest();  
  18.         // new一个外部类  
  19.         OutClassTest oc1 = new OutClassTest();  
  20.         // 通过外部类的对象new一个非静态的内部类  
  21.         OutClassTest.InnerClass no_static_inner = oc1.new InnerClass();  
  22.         // 调用非静态内部类的方法  
  23.         System.out.println(no_static_inner.getKey());  
  24.   
  25.         // 调用静态内部类的静态变量  
  26.         System.out.println(OutClassTest.InnerStaticClass.static_value);  
  27.         // 不依赖于外部类实例,直接实例化内部静态类  
  28.         OutClassTest.InnerStaticClass inner = new OutClassTest.InnerStaticClass();  
  29.         // 调用静态内部类的非静态方法  
  30.         System.out.println(inner.getValue());  
  31.         // 调用内部静态类的静态方法  
  32.         System.out.println(OutClassTest.InnerStaticClass.getMessage());  
  33.     }  
  34.   
  35.     private class InnerClass {  
  36.         // 只有在静态内部类中才能够声明或定义静态成员  
  37.         // private static String tt = "0";  
  38.         private int flag = 0;  
  39.   
  40.         public InnerClass() {  
  41.             // 三.非静态内部类的非静态成员可以访问外部类的非静态变量和静态变量  
  42.             System.out.println("InnerClass create a:" + a);  
  43.             System.out.println("InnerClass create b:" + b);  
  44.             System.out.println("InnerClass create flag:" + flag);  
  45.             //  
  46.             System.out.println("InnerClass call outer static function");  
  47.             // 调用外部类的静态方法  
  48.             test();  
  49.         }  
  50.   
  51.         public  String getKey() {  
  52.             return "no-static-inner";  
  53.         }  
  54.     }  
  55.   
  56.     private static class InnerStaticClass {  
  57.         // 静态内部类可以有静态成员,而非静态内部类则不能有静态成员。  
  58.         private static String static_value = "0";  
  59.   
  60.         private int flag = 0;  
  61.   
  62.         public InnerStaticClass() {  
  63.             System.out.println("InnerClass create a:" + a);  
  64.             // 静态内部类不能够访问外部类的非静态成员  
  65.             // System.out.println("InnerClass create b:" + b);  
  66.             System.out.println("InnerStaticClass flag is " + flag);  
  67.             System.out.println("InnerStaticClass tt is " + static_value);  
  68.         }  
  69.   
  70.         public int getValue() {  
  71.             // 静态内部类访问外部类的静态方法  
  72.             test();  
  73.             return 1;  
  74.         }  
  75.   
  76.         public static String getMessage() {  
  77.             return "static-inner";  
  78.         }  
  79.     }  
  80.   
  81.     public OutClassTest() {  
  82.         // new一个非静态的内部类  
  83.         InnerClass ic = new InnerClass();  
  84.         System.out.println("OuterClass create");  
  85.     }  
  86.   
  87. }  


Java代码 
  1. /** 
  2.  * 总结:  
  3.  * 1.静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。 
  4.  * 2.静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法,属性)。 
  5.  * 3.实例化一个非静态的内部类的方法: 
  6.  *  a.先生成一个外部类对象实例 
  7.  *  OutClassTest oc1 = new OutClassTest(); 
  8.  *  b.通过外部类的对象实例生成内部类对象 
  9.  *  OutClassTest.InnerClass no_static_inner = oc1.new InnerClass(); 
  10.  *  4.实例化一个静态内部类的方法: 
  11.  *  a.不依赖于外部类的实例,直接实例化内部类对象 
  12.  *  OutClassTest.InnerStaticClass inner = new OutClassTest.InnerStaticClass(); 
  13.  *  b.调用内部静态类的方法或静态变量,通过类名直接调用 
  14.  *  OutClassTest.InnerStaticClass.static_value 
  15.  *  OutClassTest.InnerStaticClass.getMessage() 
  16.  */  

  原文地址:

http://duqiangcise.iteye.com/blog/697476

转载于:https://www.cnblogs.com/scud001/p/3307380.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

便宜的手机图传遥控模块

目录测试程序FHDFPV.cFHDFPV.h应用效果STM32F103RC STM32 Cube IDE 大一时买的&#xff0c;当时是50元左右&#xff0c;很便宜&#xff0c;安卓上位机为FHDFPV 我买的型号波特率约为18464&#xff0c; 实测帧头为102&#xff0c;帧尾为153&#xff0c;前四个数为左右遥感对应…

使用pycharm配置flask项目,并使用git进行版本控制

https://blog.csdn.net/s1025491598/article/details/86609255 遇到的坑 (Mac pycharm 2018) 1. 在pycharm Terminal 命令窗口下&#xff0c;运行 git init mac下查看git安装目录&#xff0c;后解决

「Jenkins+Git+Maven+Shell+Tomcat持续集成」经典教程

Jenkins 是一个开源软件项目&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续集成变得可能。现在软件开发追求的是效率以及质量&#xff0c;Jenkins使得自动化成为可能&#xff01; 亮点 采用shell自定义脚本,控制集成部署环境更加方便灵活精简war包中的li…

使用Altium Designer进行DDR2的PCB设计(转比较不错)

转载于&#xff1a;http://blog.csdn.net/snaking616/article/details/53981973 本文首先列出了DDR2布线中面临的困难&#xff0c;接着系统的讲述了DDR2电路板设计的具体方法&#xff0c;最后给出个人对本次电路设计的一些思考。本次设计中CPU的封装为BGA844-SOC-Y&#xff0c;…

【机器视觉学习笔记】OpenCV C++ 与 HSV颜色模型

目录HSV颜色模型Opencv中的HSV获取颜色值的小工具平台&#xff1a;Windows 10 20H2 Visual Studio 2015 opencv_contrib-3.4.12 HSV颜色模型 本节内容摘自HSV模型及opencv应用 —— ponponon 这个模型中颜色的参数分别是&#xff1a;色调&#xff08;H&#xff09;&#xff…

win10 解决升级 WordPress 时提示”另一更新正在进行”

1. 确定 wordpress 目录的 users 权限为 完全控制。 2. https://www.wpdaxue.com/wordpress-update-problem.html 本文目录 [隐藏] 1情景再现2解决办法 WordPress 4.5 下载安装量已经超过 600 万&#xff0c;而第一个维护版本 WordPress 4.5.1 已发布&#xff0c;修复了 Wo…

清除Linux终端命令的历史记录

在Linux终端下1、运行history&#xff0c;可以得到一个整洁的Linux终端命令历史记录的列表2、运行history -c&#xff0c;可以清除杂乱的历史记录&#xff08;需要重启&#xff09;3、运行history -r /home/yajiu/history.txt&#xff0c;可以将history.txt文件存储的常用命令读…

暑假集训D19总结

考试 日常爆炸 T1 辣么简单&#xff0c;淼到极致的DP&#xff0c;我竟然打挂了 &#xff0c;打挂了 &#xff0c;只拿了75分啊&#xff0c;不能接受啊 T2 随便找找规律&#xff0c;瞎XX模拟一下就能A的鬼东西&#xff0c;我竟然打了个暴力Floyed判环&#xff08;是叫这个鬼…

【STC15库函数上手笔记】7、PCA与PWM

目录硬知识硬件知识CCP/PWM/PCA模块的结构软件知识PCA初始化函数PWM更新占空比函数测试程序PWM模式产生PWM信号main.c实验现象16位软件定时器模式模式产生PWM信号main.c实验现象捕获模式测量周期长度main.c实验现象STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof…

单元测试概述

盖种测试 1.语句覆盖&#xff1a;语句覆盖是几个测试用例的设计&#xff0c;通过测试程序运行。使每一个可以运行的语句至少运行一次。 2.判定覆盖&#xff08;也叫分支覆盖&#xff09;&#xff1a;设计若干个測试用例。运行所測程序&#xff0c;使程序中每一个…

JQuery官方学习资料(译):遍历JQuery对象和非JQuery对象

JQuery提供了一个对象遍历的Utility方法$.each()和一个JQuery集合遍历方法.each()。$.each()$.each()是一个通用的方法用来遍历对象和数组&#xff0c;Plain对象是通过其命名属性进行遍历的。$.each()可以用来替换传统的for和for-in循环。var sum 0;var arr [ 1, 2, 3, 4, 5 …

【STC15库函数上手笔记】8、比较器

目录库函数compare.ccompare.hSTC15Fxxxx.H测试程序main.cSTC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 库函数 比较器的库函数仅在官方例程中发现&#xff0c;未与其他库函数放在一起&#xff0c;笔者也未对其进行测试&…

WIN10 下 PHP7 中文乱码的解决办法

在数据提交前&#xff0c;插入语句 mysqli_set_charset($conn,utf8);

不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门

Vue.js——60分钟快速入门 Vue.js是当下很火的一个JavaScript MVVM库&#xff0c;它是以数据驱动和组件化的思想构建的。相比于Angular.js&#xff0c;Vue.js提供了更加简洁、更易于理解的API&#xff0c;使得我们能够快速地上手并使用Vue.js。 本文摘自&#xff1a;http://www…

指针以及内存分配

原文&#xff1a;http://blog.csdn.net/bizhu12/article/details/6532235 1. 指针很灵活,这使得指针很难管理,在定义指针时,将在栈中开辟一块内存存放指针的地址(栈内的内存由系统分配和释放),指针的地址内存只是存放指针的地址,不存放指针指向的数据,值得注意的是,定义指针时指…

建议11: 区别对待==和Equals

建议11&#xff1a; 区别对待和Equals在开始本建议之前&#xff0c;首先要明确概念“相等性”。CLR中将“相等性”分为两类&#xff1a;“值相等性”和“引用相等性”。如果用来比较的两个变量所包含的数值相等&#xff0c;那么将其定义为“值相等性”&#xff1b;如果比较的两…

mysql如何修改开启允许远程连接

关于mysql远程连接的问题&#xff0c;大家在公司工作中&#xff0c;经常会遇到mysql数据库存储于某个人的电脑上&#xff0c;大家要想连接mysql服务&#xff0c;装有mysql服务的电脑就必须开启远程连接 第一步&#xff0c;用dos连接上你的数据库&#xff0c;&#xff08;我这里…

Objective-C马路成魔【14-关键C语言功能】

郝萌主倾心贡献&#xff0c;尊重作者的劳动成果&#xff0c;请勿转载。 假设文章对您有所帮助&#xff0c;欢迎给作者捐赠&#xff0c;支持郝萌主。捐赠数额任意&#xff0c;重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载&#xff1a;点我传送 这里介绍一些特性&#x…

Solidworks如何自动打开和关闭特征识别FeatureWorks

如果直接对已有的零件识别特征&#xff0c;可能会报错 删除多余的特征&#xff0c;先只保留一个输入&#xff08;注意没有必要连草图也删掉&#xff0c;草图不会影响识别特征&#xff0c;你识别完了之后草图再接着该拉伸拉伸&#xff0c;该切除切除&#xff09;&#xff0c;然后…

SPI驱动0.96/1.3寸 OLED屏幕,易修改为DMA控制

目录OLED SPI 端口定义七针OLED引脚定义六针OLED引脚定义驱动程序oled.coled.holedfont.h使用main.c实验现象STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 DMA控制见【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、…