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;
}想请问一下,此时两种语言的运行机制.

解决方案 »

  1.   

    c# 的 protected 访问权限与 java 不同.
    for c#:protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问
    for java: 除了可以由派生类访问外, 还可以由同包的其它类访问.  注意包是java的概念,c#中没有.
      

  2.   

    你的代码中class A 是B的父类,而不是子类,所以A不能访问B.在java中, class A 与 B 都是在同一个包中,所以A可以访问B的protected属性.
      

  3.   

    C#中age没办,java中变了,受访问权限的protected影响
      

  4.   

    protected,在C#中只能被类实例和继承类访问,在JAVA中可被包内类访问。