这段代码运行的结果为什么是2,2?子类的属性会覆盖父类的属性吗?
class Program
{
static void Main(string[] args)
{
NewClass newClass = new NewClass();
newClass.ShowId();
}
}
class BaseClass
{
public int Id { get; set; }
public BaseClass()
{
this.Id = 1;
}
}
class NewClass:BaseClass
{
public NewClass()
{
this.Id = 2;
}
public void ShowId()
{
Console.WriteLine("{0}, {1}", this.Id, base.Id);
}
}
这个叫覆盖不准确,你的this.ID是通过继承父类的ID来的,也就是说this.ID就是base.ID,只是名字不一样
你如果吧ID改成Object类型,然后看看this.ID和base.ID的引用是否相等就会发现它们的引用时相同的
输出结果是:
2, 2
True