Czy klasa abstrakcyjna MUSI implementować metody z interfejsu?

0

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?

1

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. ;)

0

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ć...

4

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...
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1