虚函数的确切需求是C#?
我知道它提供了一个派生类可以覆盖的默认实现。虚函数的确切需求是C#?,c#,oop,C#,Oop,我知道它提供了一个派生类可以覆盖的默认实现。 但是这就是确切的目的吗?是的,这就是确切的目的不,这不是他们确切的目的。虚拟函数是用面向对象语言实现的一种方法。要实现多态性。您现在可以拥有对基类对象的引用集合,并将对派生类对象的引用放在那里,在不知道实际派生类的情况下,通过任何引用调用虚函数,并且每次调用的派生重写函数最多。这就是所谓的多态性。需要的是派生类可以重写,并且它的行为符合您的预期 反之,在派生类上创建方法时,指定new关键字——在这种情况下,使用与变量类型匹配的函数版本,因此: der
但是这就是确切的目的吗?是的,这就是确切的目的不,这不是他们确切的目的。虚拟函数是用面向对象语言实现的一种方法。要实现多态性。您现在可以拥有对基类对象的引用集合,并将对派生类对象的引用放在那里,在不知道实际派生类的情况下,通过任何引用调用虚函数,并且每次调用的派生重写函数最多。这就是所谓的多态性。需要的是派生类可以重写,并且它的行为符合您的预期 反之,在派生类上创建方法时,指定new关键字——在这种情况下,使用与变量类型匹配的函数版本,因此:
derived foo = new derived();
base foo2 = foo;
foo2.bar(); // If bar() is virtual, and overriden in derived, it will use that implementation.
foo.bar(); // if bar() is not virtual, this may be calling a completely different function, if derived defines a new version