请懂得java和c#两门语言的朋友进来看一下.
c#中如下: 
 using   System; 
 class   A 
 { 
 	void   qq() 
 	{ 
 		B   b=new   B(); 
 		b.age=33;//失败 
 	} 
 	public   static   void   Main(string[]args) 
 	{ 
 	} 
 } 
 class   B:A 
 { 
 	protected   int   age=22; 
 }   
 ----------------------------------] 
 java中: 
 class   A 
 { 
 	void   qq() 
 	{ 
 		B   b=new   B(); 
 		b.age=33;//成功 
 	} 
 	public   static   void   main(String[]args) 
 	{ 
 		System.out.println( "success ");	 
 	} 
 } 
 class   B   extends   A 
 { 
 	protected   int   age=22; 
 }   
 想请问一下,此时两种语言的运行机制.
------解决方案--------------------shalen520(Love will keep us alive)    
 而java中如果两个类在同一个包内的话,protected变量是可以被访问的,并不是缺陷,跟c#的internal差不多   
 =============================================================================   
 真的?
------解决方案--------------------事实上, Java 中的 protected 修饰符成员,对于所有子类以及同一个包内的所有其他类都是可见的。我看到这里的时候,我几乎崩溃了,多么好的 Java ,不知为何 James 他们要如此设计? 
 我没有多少 java 的实践经验,体会不到如此设计的好处。     
 我觉得这是胡说八道,当然这需要Java的人出来解释下。     
 我的印象中,Java中有四种访问权限:   
 public和private是不用说了,与C++/C#语义相同,protected是指派生类能访问,而同一个包内能访问是啥都不写,没有访问修饰符。等同于C#的internal。