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程序的技术基础,这 ...
随机推荐
- Oracle 12C CDB、PDB常用管理命令
Oracle 12C CDB.PDB常用管理命令 --查看PDB信息(在CDB模式下) show pdbs --查看所有pdbselect name,open_mode from v$pdbs; ...
- Java Properties 加载
static{ Properties prop = new Properties(); prop.load(Thread.currentThread().getContextClassLoader() ...
- 信道估计之LS
在无线通信系统中,系统的性能主要受到无线信道的制约.基站和接收机之间的传播路径复杂多变,从简单的视距传输到受障碍物反射.折射.散射影响的传播.在无线传输环境中,接收信号会存在多径时延,时间选择性衰落和 ...
- 初探three.js几何体
今天说说three.js的几何体,常见的几何体今天就不说了,今天说一说如何画直线,圆弧线,以及高级几何体. 1. 画一条直线 画直线我们使用THREE.Geometry()对象. //给空白几何体添加 ...
- HttpRunner学习7--引用CSV文件数据
前言 在之前的文章中,我们已经学习了 parameters 参数化,是在测试脚本中直接指定参数列表.这种方法简单易用,但如果我们的参数列表数据比较多,这种方法可能就不太适合了. 当数据量比较大的时候, ...
- python 正则表达式re使用模块(match()、search()和compile())
摘录 python核心编程 python的re模块允许多线程共享一个已编译的正则表达式对象,也支持命名子组.下表是常见的正则表达式属性: 函数/方法 描述 仅仅是re模块函数 compile(patt ...
- WPF引用WinForm控件
前言:在WPF开发当中由于DataGrid控件实现业务未达到非常理想的效果,我决定使用WinForm中的DataGridView来实现业务. 在XAML中加入以下命名空间: xmlns:wf=&quo ...
- EFCore的外键级联删除导致的【可能会导致循环或多重级联路径】
之前也是经常遇到这个问题,但好在每次创建的实体不多,很容易就能找到是哪个外键导致级联循环删除问题 之前都是这么处理,因为创建的实体也不多,所以还处理得来 但最近跟别人合作写后端,别人写了好多实体,我一 ...
- Python—脚本程序生成exe可执行程序(pyinstaller)
一.pyinstaller的简介 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的 ...
- 大数据理论篇 - 通俗易懂,揭秘谷歌《The Dataflow Model》的核心思想(一)
目录 前言 目标 核心的设计原则 通用的数据处理流程 切合实际的解决方案 总结 延伸阅读 最后 作者:justmine 头条号:大数据达摩院 创作不易,未经授权,禁止转载,否则保留追究法律责任的权利. ...