lol亚索技能音频:c#的一个小问题 帮忙解决下

来源:百度文库 编辑:高校问答 时间:2024/04/29 02:48:15
public abstract class Student
{
public string name1="haha";

}
public class pupil:Student
{
public string name;
public pupil(string x)
{
name=x;
}
}
class class1
{

static void Main(string[] args)
{
pupil b=new pupil("first");
Student[] a=new Student[2];
a[1]=b;
Console.WriteLine(a[1].name1);
Console.WriteLine(b.name);
这里将a[1]=b;后 a[1]的类型 值 都和b一样了 可为什么只能调用Student里的name1 不能调用pupil里的name 为什么呢?
}
就是问一下 a[1].name为什么会出错 麻烦说的基础点 详细点 我刚学没多久 谢谢

由于你的pupil类继承了student类,所以你在把pupil类型的变量付给student时,要做向上类型转换,这个是要丢失子类的相关信息的。
之所以不能访问是因为pupil的name并不是student中的成员变量,也就是说,父类并不能访问继承类中的非父类成员,所以会出错。