java内部类的可见性总结和java内部类的创建

          定义: 将一个类的定义放在另一个类定义的内部,这就是内部类.

1.功能1: 代码的隐藏和组织机制.
内部类的可见性: 由在定义内部类时的访问控制权限决定(前提是外围类是public的)
public : 在任何其他类中都可见,前提是要用"外部类名.内部类名"的方式
         

              例:public class A{


  public class B{}


   }
访问时要以 "A.B"的形式访问

protected 和 没有访问修饰符:   在本包内可以访问, 访问形式也是"A.B"


private :   只在本外围类内可见 ,且在static方法内部也必须以"A.B"的形式访问,在非static方法
  内部可以直接以"B"的形式访问
 
   
2.功能2: 内部类的对象时刻与外部类对象联系在一起,并且内部类
还拥有对外部类的所有元素的访问权.
   
   a:内部类拥有对外部类的所有成员的访问权,是如何做到的?
       首先考虑一个问题: 在外部类的如何定义一个内部类对象?
         在拥有外部类对象之前是不可能创建内部类对象的(静态内部
         类)除外.
         内部对象创建有两种方式(前提是内部类在创建内部类对象处可见)
         正确代码:
                1: A  a = new A() ;
                   A.B b = a.new B() ;
                   
                2: A a = new A() ;
                   A.B b = a.createB();
                   //createB是a内的一个方法, 
                  //public B createB(){return new B() ;}
                  
         错误代码:
                 A.B b = new A.B() ;
      理解上述创建的内部类对象的方法,应该大家能够想到,内部类的对象
      时离不开外部类对象的,时刻与外部类联系在一起. 当我们创建一个内
      部类对象时,此时内部类必定会秘密地捕获一个指向那个外围类对象的
      引用.然后当你访问外围类成员时,就是用那个引用来选择外围类的成员.
      至于如何捕获的,这个就是java语言规定的.

       
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值