c# override 关键字的,就是默认包括virtual的意思吗?

来源:百度知道 编辑:UC知道 时间:2024/06/28 17:32:36
带 override 关键字的,就是默认包括virtual的意思吗???

也就是说只要一个方法是带virtual,从祖宗那里带

之后的关于这个方法,只要没有被new,一直可以override吗???无论多少代
我知道override和new的区别

我问题的是:overrider关键字声明的方法,可以一直被override吗?(假设汽车是积累,公共汽车override了一个run方法,福特牌公共汽车业可以override这个方法吗???可以的话,如何override)
我的问题是:这个公共汽车的run方法的修饰关键字,只要一个override就可以

还是要virtual override两个关键字修饰

另外:iamXiaMi你是已经进行了类型转换!

不是这样理解的...

被virtual后override是被覆盖...也就是派生类覆盖了基类的方法..如果不被指明..那么覆盖是一直存在的... 而声明new是指派生类隐藏了基类的方法..只是被藏起来..而不是覆盖..我写个小例子你就明白了

覆盖 :
class A1
{
public virtual void A()
{
System.Console.WriteLine("1");
}
}

class A2 : A1
{
public override void A()
{
System.Console.WriteLine("2");
}
}

隐藏 :
class A1
{
public virtual void A()
{
System.Console.WriteLine("1");
}
}

class A2 : A1
{
new public void A()
{
System.Console.WriteLine("2");
}
}

用同样的实例去测试 :
A1 test = new A2();
test.A();

当被覆盖的时候..得到的结果是2~ 而当被隐藏的时候..得到的结果是1

这个说明override覆盖了基类的方法~