
C# 在子类中调用不到父类的protected成员?
classProgram{staticvoidMain(string[]args){Atest=newA();test.age=18;}}classA{protected...
class Program
{
static void Main(string[] args)
{
A test = new A();
test.age=18;
}
}
class A
{
protected int age;
}
错误 1 “TestProtected.A.age”不可访问,因为它受保护级别限制
这个错误原因我是知道的,但是请看下面的程序:
class Program:A
{
static void Main(string[] args)
{
A test = new A();
test.age=18;
}
}
class A
{
protected int age;
}
错误 1 无法通过类型“TestProtected.A”的限定符访问保护成员“TestProtected.A.age”;限定符必须是类型“TestProtected.Program”(或者从该类型派生)的 D:\C#_test\MyFirstSolution\TestProtected\Program.cs 13 18 TestProtected
下面的程序中Program类已经继承了A类,但是还是test.age还是不能访问到,而且报的错误还跟上面的程序不一样,请问第二个程序中为什么访问不到age?如果原因跟第一个一样,为什么报错会不同? 展开
{
static void Main(string[] args)
{
A test = new A();
test.age=18;
}
}
class A
{
protected int age;
}
错误 1 “TestProtected.A.age”不可访问,因为它受保护级别限制
这个错误原因我是知道的,但是请看下面的程序:
class Program:A
{
static void Main(string[] args)
{
A test = new A();
test.age=18;
}
}
class A
{
protected int age;
}
错误 1 无法通过类型“TestProtected.A”的限定符访问保护成员“TestProtected.A.age”;限定符必须是类型“TestProtected.Program”(或者从该类型派生)的 D:\C#_test\MyFirstSolution\TestProtected\Program.cs 13 18 TestProtected
下面的程序中Program类已经继承了A类,但是还是test.age还是不能访问到,而且报的错误还跟上面的程序不一样,请问第二个程序中为什么访问不到age?如果原因跟第一个一样,为什么报错会不同? 展开
展开全部
//先看正确的例子
class Program : A
{
static void Main(string[] args)
{
Program test = new Program();
//这样可以正确访问基类中的protected成员
test.age = 10;
}
}
class A
{
protected int age;
}
-------
对基类中protected成员的访问,必须满足:
基类中的protected成员,只能从(Ⅰ)基类内部非静态方法访问(Ⅱ)继承这个基类的子类内部的非静态方法访问
-------
1)在问题中第1个程序中的错误是因为:你试图从A类的外部访问A内的protected成员。
2)在问题中第2个程序中的错误是因为:虽然将类Program作为A的子类,但你试图从子类的静态方法(即Main方法)访问基类的protected成员。
追问
谢谢,不过还是不太明白,我又试了试,用非静态方法访问。在另一个问题里,麻烦您再去看一下吧。
展开全部
A test = new A();声明出来的是一个新的类,和你继承的没有关系,所以会报错
想用继承类A的protected变量,可以用 this.age
想用继承类A的protected变量,可以用 this.age
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好不要用Program继承自其他类,试试其他的吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询