爱心技术专栏专题

:语言和平台

摘录:java基础 来源:java基础 加入时间:2006年08月19日
摘要:
:语言和平台
: 语言和平台

程序逻辑上的组织方式(如名称空间,包等)可以和部署时的分发方式(如程序集,jar包等)不同,那么不同class间的相互访问权限应该在逻辑组织上限制还是物理分发上限制呢?

Java

语言本身

采用了对逻辑组织方式进行限制,即你可以访问java.lang中的私有类而能够通过编译,只要你自己的代码也以java.lang为包名[我猜的,没试过]

转载:转载请保留本信息,本文来自
http://www.51dibs.com
/html/2006/article/info16/a_35b5cd75fa15d764.htm

:语言和平台

站点:爱心种子小博士 关键字::语言和平台

   
: 语言和平台

程序逻辑上的组织方式(如名称空间,包等)可以和部署时的分发方式(如程序集,jar包等)不同,那么不同class间的相互访问权限应该在逻辑组织上限制还是物理分发上限制呢?

Java

语言本身

采用了对逻辑组织方式进行限制,即你可以访问java.lang中的私有类而能够通过编译,只要你自己的代码也以java.lang为包名[我猜的,没试过]

运行时

采用了对物理分发方式进行限制,可能跟缺省的ClassLoader有关,即使你通过编译了,但部署时同一包名下的类分成了不同的jar包,那么对私有类的访问可能会出错[我猜的,没试过]

.Net

CLS

不知道,希望补充

C#

对物理分发方式即程序集进行限制,从语言到运行时都是如此

个人倾向于C#的权限控制,合理且灵活;Java中当逻辑和物理组织不同时,不是被迫把一个class别扭的挪到当前package,就是把它声明为public,而一旦声明为public,你就再也控制不了了

传统的访问控制已超出了语言本身的范围,属于平台特性了

客户服务中心信箱:[email protected] [email protected] 网站地图

声明

合作伙伴: