读书人

请理解java和c#两门语言的朋友进来看一

发布时间: 2011-12-22 23:36:25 作者: rapoo

请懂得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。

读书人网 >C#

热点推荐