Witam,
czy klasa abstrakcyjna MUSI implementować metody odziedziczone z interfejsu?
W książce napisali, że NIE musi ale kod pod VS bez implementacji metody nie przechodzi - więc jak to jest?
Witam,
czy klasa abstrakcyjna MUSI implementować metody odziedziczone z interfejsu?
W książce napisali, że NIE musi ale kod pod VS bez implementacji metody nie przechodzi - więc jak to jest?
Co to za książka i co dokładnie napisali? Bo niby to prawda, chociaż tak naprawdę nie. W sensie implementować musi, ale może to robić abstrakcyjnie, czyli bez implementacji. ;)
Książka:
http://helion.pl/ksiazki/c-praktyczny-kurs-wydanie-ii-marcin-lis,cshpk2.htm#format/e
strona 315:
"zgodnie z tym, co zostało napisane wcześniej, klasa, która implementuje interfejs, musi zawierać implementację wszystkich jego składowych lub też musi być klasą abstrakcyjną".
Zrozumiałem z powyższego, że skoro jest tam "lub" to albo klasa jest zwykła i implementuje wszystkie składowe albo klasa jest abstrakcyjna i nie musi implementować...
Najlepiej widać to na przykładzie:
public interface IFoo
{
void Bar();
void Baz();
}
public class ClassFoo : IFoo
{
public void Bar()
{
// TODO...
}
public void Baz()
{
// TODO...
}
}
public abstract class FooAbstract : IFoo
{
public abstract void Bar();
public void Baz()
{
// TODO...
}
}
public class ClassFooAbstract : FooAbstract
{
public override void Bar()
{
// TODO...
}
}