class A
{
protected int i = 13;
}
class B : A
{
int i = 9;
public void fun() {
console.write(i);
}
}
从 B 类对象调用方法fun()
后,它会打印值 9。如果
我想访问. i=13
fun()
当protected属性与派生类private属性同名时,如何在派生类中访问基类的protected属性?
无论如何,这将是一个坏主意。不过你可以试试base.i
。
使用base
关键字访问继承的类:
Console.Write(base.i);
(代码经过测试,它使用 A 类中的成员。)
如果您想从派生类中访问它,请尝试:
class B : A
{
public void fun()
{
Console.Write(base.i);
}
}
Sana Tahseen,在基类和派生类中具有相同名称的类成员被认为是不好的做法,编译器将生成警告消息。我建议你避免这种做法,但如果你绝对需要这样做,那么你也应该在派生类的成员定义中使用 new 关键字:
class A
{
protected int i = 13;
}
class B : A
{
protected new int i = 9;
public void fun()
{
Console.Write(base.i);
}
}
但是,推荐的方法是不要使用具有相同名称的成员。您可以在派生类的构造函数中更改继承的受保护成员字段的值:
class A
{
protected int i = 13;
}
class B : A
{
public B()
{
i = 9;
}
public void fun()
{
Console.Write(i);
}
}
public class AcessBaseDataMember
{
public static void Main()
{
DerivedClass obj = new DerivedClass();
obj.Get_Base_DataMember();
obj.Get_Derived_DataMember();
Console.Read();
}
}
public class BaseClass
{
protected int i = 13;
}
公共类 DerivedClass:BaseClass { int i = 9; 公共无效 Get_Derived_DataMember() { Console.WriteLine(i); } 公共无效 Get_Base_DataMember() { Console.WriteLine(base.i); } }
class A
{
protected int i = 13;
}
class B : A
{
int i = 9;
public void print_own_member() {
console.write(i);
}
public void print_base_class_member() {
console.write(base.i);
}
}
B 类中的变量 i 隐藏了 A 类中的变量 i。它闻起来是设计问题。但是,如果你真的想通过 fun 方法访问 i,你可以这样做:
class A {
protected int i = 13;
};
class B : A {
int i = 9;
public void fun() {
console.write( "B's i == " + i );
console.write( "A's i == " + base.i );
}
}
您应该base
为此使用关键字。
Console.Write(base.i); // It prints A class attribute i
检查这些链接
http://msdn.microsoft.com/en-us/library/ms173149.aspx
http://msdn.microsoft.com/en-us/library/ms173149(v=vs.80).aspx