[ calculon @ 18.06.2006. 14:17 ] @
Zanima me gde je greska, odnosno zasto sledeci deo koda u C#-u ne radi ono sto ocekujem: Code: using System; public class A { public virtual void print() { Console.WriteLine("A.print()"); } } public class B : A { public virtual new void print() { Console.WriteLine("B.print()"); } } public class C : B { public override void print() { Console.WriteLine("C.print()"); } } public class Test { public static void Main() { A a = new C(); a.print(); B b = new C(); b.print(); } } Ocekujem da se pri pozivu a.print() & b.print() pozove override-ovani print() metod iz C klase. Medjutim, a.print() to ne radi. Zasto gore navedeni kod nema istu funkcionalnost kao sledece u C++-u: Code: #include <iostream> using namespace std; class A { public: virtual void print() { cout << "A.print()" << endl; } }; class B : A { public: virtual void print() { cout << "B.print()" << endl; } }; class C : B { public: void print() { cout << "C.print()" << endl; } }; int main() { A *a = (A*)new C(); B *b = (B*)new C(); a->print(); b->print(); return 0; } |