Powiedzmy mam następujący kod:C# dziedziczenie
interface ISomeInterface
{
void DoSomething();
void A();
void B();
}
public abstract class ASomeAbstractImpl : ISomeInterface
{
public abstract void A();
public abstract void B();
public void DoSomething()
{
// code here
}
}
public class SomeImpl : ASomeAbstractImpl
{
public override void A()
{
// code
}
public override void B()
{
// code
}
}
Problemem jest to, że chcą mieć metoda ASomeAbstractImpl.DoSomething()
uszczelnione (końcowe), więc żadna inna klasa mogła je wdrożyć. Ponieważ kod jest teraz SomeImpl
może mieć metodę o nazwie DoSomething()
i można ją nazwać (nie zastąpi ona metody o tej samej nazwie z klasy abstrakcyjnej, ponieważ nie jest to oznaczone jako wirtualne), ale chciałbym odciąć możliwość wdrożenia takiej metody w klasie SomeImpl
.
Czy to możliwe?
Wyda ostrzeżenie tylko wtedy, gdy zrobisz to przez przypadek; dodaj "nowy" kwalifikator i zamknie się ... –