一.内部类概述
在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引用。
分享到:
相关推荐
JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。 3. JAVA 集合 集合类存放于 ...
Java 深入理解嵌套类和内部类,让你对知识点有个全面深入的理解
java期末复习抽象类与接口,内部类,知识点,期末考试用的,
关于java语言设计理念 抽象类与接口的区别是什么 java为什么不支持多继承 java里的枚举实现机制是什么 ...java中的内部类 关于类Collections,Arrays,Objects java里的方法重载 关于java里的main方法
Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 ...
JAVA核心面试知识pdf版,可以随意复制内容
10、Servlet中的forward和redirect有什么区别: Forward是服务器内部的重定向,服务器直接访问目标地址的url,地址不变。 Redirect:客户端的重定向,完全跳转,地址改变。 11、JSP的内置对象: 1)require(请求对象...
Java程序设计知识点思维导图内容如下: 1、Java网络编程基础 2、输入流与输出流 3、继承与接口 4、JDBC与MySQL数据库 5、泛型与集合框架 6、Java多线程机制 7、类与对象 8、常用实用类 9、内部类、匿名类与Lambda...
java 核心知识点 ,线程,内部静态类,抽象类
自己学习Java面向对象时对知识点的整理总结,主要包括:一些关键字、权限修饰符的使用、重载、构造器、代码块、内部类、封装、继承、多态、抽象、javabean、单元测试、包装类Object类、设计模式的理解与总结。...
内有全面的教育机构内部的Java知识点文件,内容由浅入深,个人觉得很好用,关于各方面的知识点都有涵盖。
内部类在 Java 里面算是非常常见的一个功能了,在日常开发中我们肯定多多少少都用过,这里总结一下关于 Java 中内部类的相关知识点和一些使用内部类时需要注意的点。
Date类 自动拆箱和自动装箱 Arrays 类和接口的关系 内部类 成员内部类 局部内部类 匿名内部类 抽象类 接口 多态 封装 类和对象 方法 StringBuilder类 String类 static for循环 final 权限修饰符 跳转控制语句 while...
一个java核心知识整理,都是一些基础知识,搞懂这些,最起码不会饿死,所以,小伙们加油学习吧.
java实现的各类数据结构常考知识点,包含线性表、树、图等,内部包含示例,使用Java原生sdk实现。
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
Java知识点 什么是面向对象? 面向对象是种思煜,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP),Java是一个支持并发、基于类和面向对象的计算机编程语言。 面向对象软件开发关有以下优点: *代码开发模块...
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基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 ...