Java连载58-静态内部类、成员内部类详解
一、内部类的分类:
(1)静态内部类(2)成员内部类(3)局部内部类(4)匿名内部类
二、静态内部类
1.静态内部类可以等同的看做是静态变量
内部类的重要作用:可以访问外部类中的私有数据
2.静态内部类可以直接访问外部类的静态变量,静态方法,无法直接访问成员变量和成员方法。
package com.bjpowernode.java_learning; public class D58_1_OuterClass { //静态变量 static String s1 = "A"; //成员变量 private String s2 = "B"; //静态方法 private static void m1() { System.out.println("static m1 method execute"); } //成员方法 private void m2() { System.out.println("m2 method execute"); } //静态内部类 //可以访问控制权限的修饰符修饰 //public,protected.private.缺省 static class InnerClass58{ //静态方法 public static void m3() { m1(); System.out.println(s1); // m2(); // System.out.println(s2); } //成员方法 public void m4() { } } public static void main(String[] args) { //执行m3 D58_1_OuterClass.InnerClass58.m3(); //执行m4 InnerClass58 inner = new InnerClass58(); inner.m4(); } }
二、成员内部类
1.成员内部类可以等同的看醉哦成员变量
2.成员内部类中不允许存在静态变量、静态方法、只能有成员变量和成员方法。
3.成员内部类可以有外部类的成员变量、成员方法、静态变量和静态方法。
4.注意点:内部类对象的创建方式:
需要先创建一个外部类的对象,然后利用外部类的对象再来创建内部类的对象,例如:
D58_2_MemberInnerClass d1 = new D58_2_MemberInnerClass(); InnerClass58_1 i1 = d1.new InnerClass58_1();//外部类对象加点的方式进行创建 i1.m4();
举一个完整的例子:
package com.bjpowernode.java_learning; public class D58_2_MemberInnerClass { //静态变量 static String s1 = "A"; //成员变量 private String s2 = "B"; //静态方法 private static void m1() { System.out.println("static m1 method execute"); } //成员方法 private void m2() { System.out.println("m2 method execute"); } //成员内部类 //可以访问控制权限的修饰符修饰 //public,protected.private.缺省 class InnerClass58_1{ //静态方法编译错误,不能使用这个方法 // public static void m3() { // m1(); // System.out.println(s1); // // m2(); // System.out.println(s2); // // } //成员方法 public void m4() { m1(); System.out.println(s1); m2(); System.out.println(s2); } } public static void main(String[] args) { D58_2_MemberInnerClass d1 = new D58_2_MemberInnerClass(); InnerClass58_1 i1 = d1.new InnerClass58_1(); i1.m4(); } }
三、源码:
D58_1_OuterClass.java
D58_2_MemberInnerClass.java
地址:
https://github.com/ruigege66/Java/blob/master/D58_1_OuterClass.java
https://github.com/ruigege66/Java/blob/master/D58_2_MemberInnerClass.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
Java连载58-静态内部类、成员内部类详解的更多相关文章
- Java连载39-构造方法详解
一. 1.多行注释:CTRL + shift + / 2.当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器. public class D39 ...
- “全栈2019”Java第七十一章:外部类访问静态内部类成员详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET
java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET 亲,“社区之星”已经一周岁了! 社区福利快来领取免费参加MDCC大会机会哦 Tag功能介绍—我们 ...
- 使用Java操作文本文件的方法详解
使用Java操作文本文件的方法详解 摘要: 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而 ...
- (转)Java并发包基石-AQS详解
背景:之前在研究多线程的时候,模模糊糊知道AQS这个东西,但是对于其内部是如何实现,以及具体应用不是很理解,还自认为多线程已经学习的很到位了,贻笑大方. Java并发包基石-AQS详解Java并发包( ...
- java的PrintStream(打印输出流)详解(java_io)
java的PrintStream(打印输出流)详解(java_io) 本章介绍PrintStream以及 它与DataOutputStream的区别.我们先对PrintStream有个大致认识,然后再 ...
- Java开发利器Myeclipse全面详解
Java开发利器Myeclipse全面详解: Ctrl+1:修改代码错误 Alt+Shift+S:Source命令 Ctrl+7:单行注释 Ctrl+Shift+/ :多行注释 Ctrl+I :缩进( ...
- Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...
- [译]Java Thread join示例与详解
Java Thread join示例与详解 Java Thread join方法用来暂停当前线程直到join操作上的线程结束.java中有三个重载的join方法: public final void ...
- Java虚拟机之垃圾回收详解一
Java虚拟机之垃圾回收详解一 Java技术和JVM(Java虚拟机) 一.Java技术概述: Java是一门编程语言,是一种计算平台,是SUN公司于1995年首次发布.它是Java程序的技术基础,这 ...
随机推荐
- HTML 02
form表单 能够获取用户输入(包括输入, 选择和上传文件) 将用户的输入内容全部发送给后端 参数 action 向何处提交 不写, 默认朝当前页面所在地址提交数据 全写路径 (https://www ...
- 《Dotnet9》系列-开源C# WPF项目强力推荐
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- 我在知识星球上创建了免费的Web3D学习的星球~
大家好,我是YYC. 我在知识星球创建了一个免费的星球-"YYC的Web 3D旅程",欢迎大家加入- 本星球完全免费,致力于打造专业的Web 3D技术学习区,分享各种3D技术和信息 ...
- SpringBoot电商项目实战 — ElasticSearch接入实现
如今在一些中大型网站中,搜索引擎已是必不可少的内容了.首先我们看看搜索引擎到底是什么呢?搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术.搜索引擎依托于 ...
- python函数编程-偏函数partial function
一般的,通过设定函数参数的默认值,可以减低函数调用的难度.比如:int()函数可以把字符串转换成整数: >>> int(') 123 事实上,int()函数还提供额外的base参数, ...
- SuperMap iDesktop .NET 10i制图技巧-----如何利用二维平面数据起白膜
1.打开超图的SuperMap iDesktop,加载数据源 udbx其实就是类似于arcgis中的gdb一样的东西,把数据压缩在里面了,这样也可以保证数据的统一集中 2.打开二维面数据,里面的结构如 ...
- AI: Web: 1 Vulnhub Walkthrough
下载链接: https://www.vulnhub.com/entry/ai-web-1,353/ 主机发现扫描: 主机端口扫描 http://10.10.202.158/ 目录扫描: ╰─ sudo ...
- 扫描枪连接zebra打印机打印条码标签无需电脑
在一些流水线生产的现场,需要及时打印条码标签,由于现场环境和空间限制,无法摆放电脑或者通过连接电脑来打印条码标签的速度太慢, 瑞科条码特提供了一套扫描枪直接连接条码打印机,扫描枪扫描条码之后直接打印输 ...
- JsonPath基本用法
JsonPath基本用法 本文主要介绍JsonPath的基本语法,并演示如何在Newtonsoft.Json中进行使用. JsonPath的来源 看它的名字你就能知道,这家伙和JSON文档有关系,正如 ...
- Javassist中文技术文档
本文译自Getting Started with Javassist,如果谬误之处,还请指出. bytecode读写 ClassPool Class loader 自有和定制 Bytecode操控接口 ...