请懂得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控制范围不同