`
bolinyang
  • 浏览: 74282 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA内部类中的一个小知识点

阅读更多
一.内部类概述
在JAVA的一个类中可以嵌套一个类的定义,嵌套定义的那个类就是所谓的内部类。如果这个内部类不是一个静态内部类,下面的讨论就是针对非静态的内部类而言的。那么该内部类对其外部类的所有成员都有访问权限,就好像内部类拥有外部类的这些成员一样。那么这是怎么做的呢?其实很简单,内部类中保存了一个外部类的引用,通过这个引用,内部类可以访问外部类的所有成员,既然是通过这个引用来实现的,那么创建内部类对象时必须要获取到这样一个外部类的引用,只有这样才能保证上面的机制。

二.看一段源代码
public class Parcel2 {
    private int num = 0;
    class Contents {
        private int i = 11;
        int value() {
            // 4.使用外围类的this引用访问私有成员变量num
            this.i = Parcel2.this.num;
            // this.i = num;
            return i;
        }
    }
    class Destination {
        private String label;
        Destination(String whereTo) {
            this.label = whereTo;
        }
        String readLabel() {
            return this.label;
        }
    }
    public Destination to(String s) {
        // 1.直接使用内部类的名字
        return new Destination(s);
    }
    public Contents contents() {
        // 2.直接使用内部类的名字
        return new Contents();
    }
    
    public static void main(String[] args) {
        Parcel2 p = new Parcel2();
        // 3.这里不能直接使用内部类的名字
        Contents c1 = p.new Contents();
    }
}



    1.看看上述源代码,我们发现这样一个规律,在外围类的非静态方法中创建一个内部类对象,此时不需要.new语法,直接创建即可,因为调用非静态方法的时候,会把this对象隐式传递进来,所以不需要.new语法来告诉它外围对象的引用。但是在静态方法中创建内部类的对象时,内部类是无法获取外围类的引用的,因为调用静态方法时外围类的引用不会隐式传递到方法的内部的


    2.看看注释中的第四点,在内部类中我们可以使用外内名称.this来获取到外围类的引用,通过这个引用可以访问外围类的成员,当然访问外围类的成员未必需要显式的使用这个this引用。

分享到:
评论

相关推荐

    JAVA核心知识点整理.zip

    JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。 3. JAVA 集合 集合类存放于 ...

    Java 深入理解嵌套类和内部类

    Java 深入理解嵌套类和内部类,让你对知识点有个全面深入的理解

    java期末复习抽象类与接口,内部类,知识点.zip

    java期末复习抽象类与接口,内部类,知识点,期末考试用的,

    JAVA知识点总结.pdf

    关于java语言设计理念 抽象类与接口的区别是什么 java为什么不支持多继承 java里的枚举实现机制是什么 ...java中的内部类 关于类Collections,Arrays,Objects java里的方法重载 关于java里的main方法

    java 语言中常见易错知识点

    Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 ...

    JAVA核心面试知识pdf版

    JAVA核心面试知识pdf版,可以随意复制内容

    JAVA基础知识点汇总

    10、Servlet中的forward和redirect有什么区别: Forward是服务器内部的重定向,服务器直接访问目标地址的url,地址不变。 Redirect:客户端的重定向,完全跳转,地址改变。 11、JSP的内置对象: 1)require(请求对象...

    Java程序设计知识点思维导图

    Java程序设计知识点思维导图内容如下: 1、Java网络编程基础 2、输入流与输出流 3、继承与接口 4、JDBC与MySQL数据库 5、泛型与集合框架 6、Java多线程机制 7、类与对象 8、常用实用类 9、内部类、匿名类与Lambda...

    java 核心知识点

    java 核心知识点 ,线程,内部静态类,抽象类

    Java面向对象知识点整理.xmind

    自己学习Java面向对象时对知识点的整理总结,主要包括:一些关键字、权限修饰符的使用、重载、构造器、代码块、内部类、封装、继承、多态、抽象、javabean、单元测试、包装类Object类、设计模式的理解与总结。...

    Java全面知识点PDF文件

    内有全面的教育机构内部的Java知识点文件,内容由浅入深,个人觉得很好用,关于各方面的知识点都有涵盖。

    Java内部类详解

    内部类在 Java 里面算是非常常见的一个功能了,在日常开发中我们肯定多多少少都用过,这里总结一下关于 Java 中内部类的相关知识点和一些使用内部类时需要注意的点。

    Java基础知识点.html

    Date类 自动拆箱和自动装箱 Arrays 类和接口的关系 内部类 成员内部类 局部内部类 匿名内部类 抽象类 接口 多态 封装 类和对象 方法 StringBuilder类 String类 static for循环 final 权限修饰符 跳转控制语句 while...

    JAVA核心面试知识整理

    一个java核心知识整理,都是一些基础知识,搞懂这些,最起码不会饿死,所以,小伙们加油学习吧.

    数据结构常考知识点(java实现版)

    java实现的各类数据结构常考知识点,包含线性表、树、图等,内部包含示例,使用Java原生sdk实现。

    java核心知识点整理.pdf

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    Java知识点.docx

    Java知识点 什么是面向对象? 面向对象是种思煜,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP),Java是一个支持并发、基于类和面向对象的计算机编程语言。 面向对象软件开发关有以下优点: *代码开发模块...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    6.2.1 在类中给每个变量一个初始值 147 6.2.2 定义自己的引用 147 6.2.3 使用点操作符的技巧 148 6.2.4 类的数组 149 6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车...

    一份面向Java初学者和初级工程师的知识点总结和面试题解析,着重关注面试中最常见的知识点。.zip

    Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 ...

Global site tag (gtag.js) - Google Analytics