【求高手指点】C#中protected用法和private用法怎么有些地方这么相同??
protected用法是:访问仅限于包含类或从包含类派生的类型;
private用法是:访问权限仅限于此类中;
下面是我写了一个简单代码,令我不解的是:如果在父类中声明一个属性用protected修饰,我在子类中如果想调用父类中被protected修饰的属性时,必须先将父类中的被protected修饰的属性进行封装才可以。
如果不对父类中被protected修饰的属性进行封装的话:
程序就会报错:“错误 无法通过类型“ConsoleApplication3.BaseTest”的限定符访问保护成员“ConsoleApplication3.BaseTest.b”;限定符必须是类型“ConsoleApplication3.ChildTest”(或者从该类型派生)的“
这是为什么啊?怎么protected的用法和private的用法都一样啊??搞不懂啊!!(以下是代码)
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
/// <summary>
/// 父类
/// </summary>
class BaseTest
{
public int a = 10;
//如果不对protected b进行封装的话,会报错
protectedint b = 2;
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
/// <summary>
/// 子类
/// </summary>
class ChildTest:BaseTest
{
int c;
int d;
public void printTest()
{
BaseTest basetest = new BaseTest();
this.a = basetest.a;
//当程序走到这一步时就不报错!不知道怎么回事(感觉怎么和private用法差不多啊,别的类调用时进行封装才可以)
this.c = basetest.b;
}
}
}