快速业务通道

探讨Java内部类的可见性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

探讨Java内部类的可见性

时间:2011-02-12 zhangjunhd

在Java中,当生成一个内部类的对象时,此对象与制造它的外部类通过外部类的.this保持着联系,因此该内部类对象可以访问其外部类对象的所有成员,包括private成员。

而该内部类对象对于其他类的对象的访问,遵照常规的访问权限语法,这一点也没有什么特别支持。这里需要探讨的是,外部类以及其他类的对象可以如何访问到某个内部类对象,即内部类的可见性问题。

下面是一个示例程序Out.java,其中包含了4个不同访问权限的内部类(private,default,protected,public),在每个内部类中,分别包含4个不同访问权限的成员与方法。在外部类Out中提供了得到内部类实例的方法。

Out.java

package com.zj.main; public class Out {    public PrivateIn getPrivateIn(){     return new PrivateIn();    }    public DefaultIn getDefaultIn(){     return new DefaultIn();    }    public ProtectedIn getProtectedIn(){     return new ProtectedIn();    }    public PublicIn getPublicIn(){     return new PublicIn();    }    private class PrivateIn implements InMethod{     private int private_arg;     int default_arg;     protected int protected_arg;     public int public_arg;     private void private_method(){};     void default_method(){};     protected void protected_method(){};     public void public_method(){};    }    class DefaultIn implements InMethod{     private int private_arg;     int default_arg;     protected int protected_arg;     public int public_arg;     private void private_method(){};     void default_method(){};     protected void protected_method(){};     public void public_method(){};    }    protected class ProtectedIn implements InMethod{     private int private_arg;     int default_arg;     protected int protected_arg;     public int public_arg;     private void private_method(){};     void default_method(){};     protected void protected_method(){};     public void public_method(){};    }    public class PublicIn implements InMethod{     private int private_arg;     int default_arg;     protected int protected_arg;     public int public_arg;     private void private_method(){};     void default_method(){};     protected void protected_method(){};     public void public_method(){};    }    public static void main(String[] args){     //create an outer object     Out out=new Out();     //create a private inner object by ''new''     Out.PrivateIn privateIn=out.new PrivateIn();     privateIn.private_arg=0;     privateIn.private_method();     // create a private inner object by ''out''s method''     Out.PrivateIn privateIn2 = out.getPrivateIn();     privateIn2.private_arg = 0;     privateIn2.private_method();    } }

探讨Java内部类的可见性(2)

时间:2011-02-12 zhangjunhd

所有的4个内部类都实现了一个接口InMethod,该接口的作用在下文中会有讨论。下面先讨论内部类所在的外部类对其内部类对象的访问权限问题。

1.外部类的访问

我们通过两种两种方式试图创建内部

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号