关于内部类:

作用: 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. 【卷土重来之C#学习笔记】(三) 类的基本概念

    1.类的概述   程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,并被称为类.   类是一个能存储数据并执行代码的数据结构. 它包含数据成员和函数成员: 数据成员:存储与类或类的实例相关数 ...

  2. MsysGit下GUI乱码问题解决

    在Windows下安装Git-preview-1.7.4后,使用中发现许多的乱码问题,感觉甚是不便.这是因为Git是在linux下开发的管理软件,而linux的编码方式是基于UTF-8的,所以移植到W ...

  3. 【VMware】VMware的安装和更改虚拟机默认存储路径

    1.VMware Workstation 14中文破解版安装 网盘下载链接:https://pan.baidu.com/s/1pbDXpgpNQTdTRzzKNWfE1A linux镜像(CentOS ...

  4. spring-boot 1.4.x遇到的cpu高的问题

    如果你的spring-boot应用里tomcat线程耗cpu较高,并主要耗在做读取jar的操作上(堆栈类似下面),可能跟我们遇到同样的问题. CRC32.update(byte[], int, int ...

  5. 什么是PV,什么是UV,什么是IP. 流量统计的各种数据!

    pv流量 什么是PV? 解答:PV是指页面刷新的次数,每一次页面刷新,就算做一次pv流量. PV高一定代表来访者多吗? 解答:不一定如此,一般来说,PV与来访者的数量成正比,但是PV并不直接决定页面的 ...

  6. .Net Mvc框架知识点

    一.实现Controller的依赖注入: 1.自定义继承DefaultControllerFactory 类的控制器工厂类并重写GetControllerInstance方法:(如:InjectCon ...

  7. java生产者,消费者

    有很多实现的方法 使用blockingqueue实现 demo import java.util.concurrent.LinkedBlockingQueue; /** * Created by 58 ...

  8. for循环的几种比较

    对一个集合遍历的3种方法:1.for(int i=0;i<list.size();i++) 2.for(int i=0,len=list.size();i<len;i++) 3.for ( ...

  9. Xcode6中Swift没有智能提示和自动补全功能

    今天在学习Swift的过程中,编写代码,发现没有智能提示和自动补全功能,一阵不适应,在网上溜达了下,找到了解决办法,测试可行 中文系统新建工程,copyright里有日期,2014年,“年”..然后删 ...

  10. 区域可编辑contenteditable的问题总结

    一.如何在可编辑区域div的光标处通过点击事件来添加文本内容 下面的例子是可编辑div的区域添加文本内容和判断光标位置的方法 <!DOCTYPE html> <html lang=& ...