关于内部类:

作用: 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. IE678910不兼容H5的placeholder属性,需要JS解决

    两种方法的思路 一.使用input的value作为显示文本 二.不使用value,添加一个额外的span标签,绝对定位覆盖到input上面. 两种方式各有优缺点,方法一占用了input的value属性 ...

  2. c#-foreach的秘密

    foreach的秘密 class Program { static void Main(string[] args) { //创建Person的对象 Person p1=new Person(); / ...

  3. MVC Request.UrlReferrer为null

    使用情景,登录后返回登录前访问的页面. 这个时候用到了UrlReferrer var returnUrl = HttpContext.Current.Request.UrlReferrer != nu ...

  4. 在MyEclipse中使用javadoc导出API文档详解

    本篇文档介绍如何在MyEclipse中导出javadoc(API)帮助文档,并且使用htmlhelp.exe和jd2chm.exe生成chm文档. 具体步骤如下: 打开MyEclipse,选中想要制作 ...

  5. Spring MVC 参数必填项导致客户端报 HTTP 400 并且无法进入断点的问题

    1.问题 Spring MVC 在参数上设置了必填项,post 请求时报 HTTP 400 并且未进入断点,如将“年龄”设置为了必填项: @RequestParam( value="age& ...

  6. 响应式 Web 设计 - Viewport 和手机变框变粗的问题

    一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下: <meta name="viewport" content="width=devi ...

  7. PHP基础--strtr和str_replace字符替换函数

    (一)strtr是字符替换函数 (1)单个字符替换: <?php echo strtr("abba", "ab", "10"),&qu ...

  8. JSP初学者2

    <jsp:useBean id="name" class="classname" scope="page|request|session|app ...

  9. CSS样式编写案例

    1.制作如图三角形效果: 步骤一:将右侧盒子设置为相对定位 步骤二:在右侧盒子里面新建个子盒子,设置宽高相等,为正方形,绝对定位 步骤三:将绝对定位的盒子用CSS3旋转属性旋转 2.制定如图的序列号 ...

  10. ubuntu14.04安装rabbitmq

      ubuntu14.04安装rabbitmq及配置 1.修改/etc/apt/sources.list文件 命令:vi /etc/apt/sources.list 在最后一行加上:deb http: ...