天津河西房管局官网:c#的一个小问题 帮忙解决下
来源:百度文库 编辑:查人人中国名人网 时间:2024/08/27 21:21:42
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为什么会出错 麻烦说的基础点 详细点 我刚学没多久 谢谢
{
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中的成员变量,也就是说,父类并不能访问继承类中的非父类成员,所以会出错。