博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在内部类中可以访问其外部类的所有域,即使是私有域
阅读量:2299 次
发布时间:2019-05-09

本文共 1269 字,大约阅读时间需要 4 分钟。

1、私有内部类 —— 在方法之间定义的内部类,非静态
      我们首先看看类中内部类的两个特点:
      (1) 在外部类的作用范围内可以任意创建内部类对象,即使内部类是私有的(私有内部类)。即内部类对包围它的外部类可见。
例如 (实际上,内部类是可以设置为public公开的,但一般我是当做成员变量设置为private)
//代码1:内部类对外部类可见  
class Outer{ 
    //创建私有内部类对象 
    public Inner in=new Inner(); 
 
    //私有内部类 
    private class Inner{ 
         ... 
    } 
 
      (2) 在内部类中可以访问其外部类的所有域,即使是私有域。即外部类对内部类可见。
例如
//代码2:外部类对内部类可见  
//(内部类可以访问外部类的所有成员变量和方法) 
class Outer{ 
    //外部类私有数据域 
    private int data=0; 
 
    //内部类 
    class Inner{ 
        void print(){ 
            //内部类访问外部私有数据域 
            System.out.println(data); 
        } 
    } 
 
      问题来了:上面两个特点到底如何办到的呢?内部类的"内部"到底发生了什么?
       其实,内部类是Java编译器一手操办的。虚拟机并不知道内部类与常规类有什么不同。 编译器是如何瞒住虚拟机的呢?
       对内部类进行编译后发现有两个class文件:Outer.class 和Outer$Inner.class 。这说明内部类Inner仍然被编译成一个独立的类(Outer$Inner.class),而不是Outer类的某一个域。 虚拟机运行的时候,也是把Inner作为一种常规类来处理的。

class  InnerVistOuterPrivate{	public static void main(String[] args) 	{		System.out.println("Hello World!");		new Outer().new Inner().print();	}}//代码2:外部类对内部类可见 //(内部类可以访问外部类的所有成员变量和方法) class Outer{     //外部类私有数据域     private int data=100;      //内部类     class Inner{         void print(){             //内部类访问外部私有数据域             System.out.println(data);         }     } } /*Hello World!100请按任意键继续. . .*/

转载地址:http://owkib.baihongyu.com/

你可能感兴趣的文章
网络爬虫基本原理二
查看>>
网络爬虫基本原理(一)
查看>>
hadoop edits 文件损坏修复办法
查看>>
【源码】Hadoop 2.x中fsimage和edits合并实现
查看>>
MySQL配置文件my.cnf参数优化和中文详解
查看>>
对MySQL配置参数 my.ini/my.cnf的详细解析
查看>>
JDBC连接MySQL【各参数详解】
查看>>
完整java开发中JDBC连接mysql或者其他数据库代码和步骤
查看>>
mysql读写分离的完整配置【centos6.5-mini版操作系统中mysql数据库的操作日志以及创建的数据库和表均在/var/lib/mysql此目录下,yum源在/var/lib/yum下】
查看>>
未测试---- mysql+spring+mybatis实现数据库读写分离[代码配置]
查看>>
【未测试】使用mysql-proxy 快速实现mysql 集群 读写分离
查看>>
【对比mysql各种代理】mysql中间件研究(Atlas奇虎360,cobar阿里巴巴,TDDL淘宝分布式数据层)
查看>>
【未测试】采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
查看>>
【已测试】Java+MySQL实现网络爬虫程序
查看>>
数据挖掘工程师笔试及答案整理
查看>>
数据挖掘方法案例介绍
查看>>
数据挖掘150道试题 测测你的专业能力过关吗?
查看>>
一位项目经理的一些个人体会
查看>>
数据仓库工作总结
查看>>
过滤器和拦截器的区别
查看>>