日期:2014-05-20  浏览次数:20653 次

请懂得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;
}

想请问一下,此时两种语言的运行机制.


------解决方案--------------------
没搞明白你想问什么?只问机制?还是遇到了问题?
------解决方案--------------------
c# 的 protected 访问权限与 java 不同.
for c#:protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问
for java: 除了可以由派生类访问外, 还可以由同包的其它类访问. 注意包是java的概念,c#中没有.

------解决方案--------------------
你的代码中class A 是B的父类,而不是子类,所以A不能访问B.

在java中, class A 与 B 都是在同一个包中,所以A可以访问B的protected属性.
------解决方案--------------------
protected控制范围不同