Sobes.tech
Junior — Middle

Lehet-e virtuális függvényt definiálni egy nem öröklődő osztályban?

sobes.tech MI

Válasz az MI-től

C#-ban egy virtuális függvény (metódus) arra szolgál, hogy leszármazott osztályokban felülírják. Ha egy osztályt sealed (lezárt) módon deklarálnak, akkor benne virtuális metódusokat lehet definiálni, de azokat felülírni nem lehet, mivel az öröklés tiltott.

Példa:

sealed class MyClass
{
    public virtual void MyMethod()
    {
        Console.WriteLine("Virtuális metódus lezárt osztályban");
    }
}

Itt a MyMethod virtuális, de mivel a MyClass osztály lezárt, senki sem örökölheti és írhatja felül ezt a metódust. Így virtuális metódusok nem-örökölhető osztályban technikailag lehetségesek, de a jelentésük korlátozott.