C# 3.0 派生类不能引用父类
有人能解释为什么会这样吗?记忆中发生了什么?你似乎误解了继承 每个C# 3.0 派生类不能引用父类,c#-3.0,C# 3.0,有人能解释为什么会这样吗?记忆中发生了什么?你似乎误解了继承 每个女儿和每个儿子都是父亲。这就是为什么可以将这两个变量安全地分配给父变量的原因。子类不能删除属性/方法,只能添加它们,这就是为什么它可以确保它总是工作的原因 但是,如果您有一个Father的实例,并希望将其分配给一个Son变量,则无法确定该实例是否是一个Son并且实际具有所需的所有属性。父实例还可以包含与子实例不兼容的子实例。这就是为什么编译器不能隐式地转换它们,但作为程序员,您可以显式地转换它们。在提出具体问题之前,您可能想先了解
女儿
和每个儿子
都是父亲
。这就是为什么可以将这两个变量安全地分配给父变量的原因。子类不能删除属性/方法,只能添加它们,这就是为什么它可以确保它总是工作的原因
但是,如果您有一个Father
的实例,并希望将其分配给一个Son
变量,则无法确定该实例是否是一个Son
并且实际具有所需的所有属性。父实例
还可以包含与子实例不兼容的子实例
。这就是为什么编译器不能隐式地转换它们,但作为程序员,您可以显式地转换它们。在提出具体问题之前,您可能想先了解OOP的一些基本概念。
class Program
{
static void Main(string[] args)
{
Father objFather = new Son(); //Ok compiles
Son objSon1 = new Father(); //Comile time error : Cannot implicitly convert type
Son objSon = (Son)new Father(); //Run time error
Console.ReadLine();
}
}
class Father
{
public void Read()
{
}
}
class Daughter:Father
{
}
class Son:Father
{
}