关于内部类:

作用: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

分类: 成员内部类 静态内部类 方法内部类(即内部类定义在外部类的方法中) 匿名内部类

例如:要调用一般内部类必须先实例化外部类

int a=;
int b=;
// 内部类Inner,类Inner在类HelloWorld的内部
public class Inner {
int a=;
// 内部类的方法
public void show() {
System.out.println("welcome !"+a+b+Outer.this.a);
//内外有同名时使用this使用外部类的成员变量
}
} public static void main(String[] args) { // 创建外部类对象
HelloWorld hello = new HelloWorld();//定义了成员内部类后,
//必须使用外部类对象来创建内部类对象,而不能直接去 new
//一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( )
// 创建内部类对象
Inner i = hello.new Inner();
// 调用内部类对象的方法,不能直接使用内部类的方法哦
i.show();
}
}

一般类中:

静态成员(方法或属性)可以使用类名直接访问,也可以使用对象名进行访问。

静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员(必须通过对象来调用)。

在普通成员方法中,则可以直接访问同类的非静态变量和静态变量

内部类中:

1如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;  如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

2静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

3创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类(); //外部类

//外部类
public class HelloWorld { // 外部类中的静态变量score
private static int score = ;
//外部类的非静态变量
private int a=;
// 创建静态内部类
public static class SInner {
// 内部类中的变量score
int score = ; public void show() {
System.out.println("访问外部类中的score:" + HelloWorld.score );
System.out.println("访问内部类中的score:" + score);
System.out.println("访问外部类中a:" + new HelloWorld().a);
}
} // 测试静态内部类
public static void main(String[] args) {
System.out.println("访问外部类中的score:" + score+"访问外部类非静态a"+new HelloWorld().a);
//静态方法中可以直接调用该类的 静态成员 ,但是不能调用非静态成员
// 直接创建内部类的对象
SInner si=new SInner(); // 调用show方法
si.show();
}
}

java容易混淆的的内部类相关概念的更多相关文章

  1. Java语法糖4:内部类

    内部类 最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类. 内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功 ...

  2. Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字

    Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...

  3. Java代码混淆工具ProGuard

    目录 Java代码混淆工具ProGuard 简介 描述 作用的环境 功能 工作原理 下载 使用时注意事项 版本问题 JDK位数问题 Java的字节码验证问题 关于使用类似于Hibernate的对象关系 ...

  4. “全栈2019”Java第九十三章:内部类应用场景(迭代器设计模式)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第九十一章:内部类具有多态特性吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. java中的几种内部类

    Java中的几种内部类 内部类,听名字就可以知道是什么意思,就是类里面的类.有成员内部类,静态内部类,局部内部类和匿名内部类. 下面说一个每种内部类的的使用. 一.  成员内部类

  7. Java编程的逻辑 (21) - 内部类的本质

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  8. 使用Proguard做Java代码混淆

    下载Proguard, 我下的是最新的Proguad5.2 在windows下运行bin/proguardgui.bat, 可以看见图形界面, 载入配置, 然后process. 配置文件例子 -inj ...

  9. java中的包以及内部类的介绍

    1:形式参数和返回值的问题(理解)    (1)形式参数:        类名:需要该类的对象        抽象类名:需要该类的子类对象        接口名:需要该接口的实现类对象    (2)返 ...

随机推荐

  1. ArrayList,LinkList,HashMap

    ArrayList底层实现数组,这是ArrayList get()方法的源码,底层是数组 根据下标返回在数组中对应的位置 ,查询快,插入慢 // Positional Access Operation ...

  2. React.js 小书 Lesson9 - 事件监听

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson9 转载请注明出处,保留原文链接和作者信息. 在 React.js 里面监听事件是很容易的事情 ...

  3. SpringBoot集成JWT 实现接口权限认证

    JWT介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的, 特别适用于分布式站点 ...

  4. D3(v5) in TypeScript 坐标轴之 scaleBand用法

    在学习d3时候,发现在TS中实现D3的坐标轴中遇到一些错误,而这些错误却不会存在于js(因为ts的类型检查)写法中,因此做下笔记: import * as d3 from 'd3';import * ...

  5. 自定义django admin及其界面

    1.在项目目录下新创建一个app,命名为kingadmin,在templates目录下新建kingadmin目录,用来存放相关页面的模板文件,新建一个templatetags目录,用来存放处理前端模板 ...

  6. spring mvc 外键允许Null

    spring mvc 定义模型外键时允许为Null 新手记录,习惯定义模型时将外键的数据类型为long,基本类型. 这样生成的外键是不允许为Null,但是可以通过设置字段的Column注解,使之允许为 ...

  7. [转]JS组件系列——BootstrapTable 行内编辑解决方案:x-editable

    本文转自:http://www.cnblogs.com/landeanfen/p/5821192.html 阅读目录 一.x-editable组件介绍 二.bootstrapTable行内编辑初始方案 ...

  8. HyperLink 控件

    yperLink就是一个可以用后台代码控制生成的超链接 1,声明,创建 2,设定text 3,设定navigateurl 4,将他添加到某个容器中 为什么没有保留第一次添加的连接? l 按钮1:向pa ...

  9. 当Activity出现Exception时是如何处理的?

    1.ActivityThread 2.PerformStop 在这里会调用mWindow.closeAllPanels(),从而关闭OptionMenu, ContextMenu.如果自己通过Wind ...

  10. Java使用UDP聊天程序

    主要想测试Java UDP通信.Java UDP使用DatagramSocket和DatagramPacket完成UDP通信 主要思路: 1.本机通信,ip地址为:127.0.0.1 2.开一个线程监 ...