allgemeine fragen zu interfaces(abstrakte klassen)



  • Hallo,
    Ich hätte ein paar allgemeine Fragen:

    Bezüglich abstrakte Klassen (im Speziellen Interfaces):

    Ist es richtig, dass sobald eine Methode rein virtuell (also mit virtual und = 0) ist, die Klasse abstrakt ist?

    Ist es richtig, dass wenn alle Methoden rein virtuell sind, es sich um ein Interface handelt?

    Klassen die von der Interface Klasse erben müssen die rein virtuellen Methoden überschreiben. Dürfen die dann auch neue Methoden implementieren?

    Kann ich in einem abstrakten Interface problemlos einen Zeiger auf ein anderes Interface definieren? (andres interface is somit mittels komposition im einen interface drin)

    und Wenn ich ein interface IA habe:
    und zwei Klassen A und AA die von IA erben dann kann/muss überall wo IA erwartet wird A oder AA verwendet werden. ?



  • cryps schrieb:

    Hallo,
    Ich hätte ein paar allgemeine Fragen:

    Bezüglich abstrakte Klassen (im Speziellen Interfaces):

    Ist es richtig, dass sobald eine Methode rein virtuell (also mit virtual und = 0) ist, die Klasse abstrakt ist?

    Ja.

    Ist es richtig, dass wenn alle Methoden rein virtuell sind, es sich um ein Interface handelt?

    Nein. Die Klasse könnte noch Datenmember haben, die IMHO nicht zu einem Interface gehören dürfen.

    Klassen die von der Interface Klasse erben müssen die rein virtuellen Methoden überschreiben. Dürfen die dann auch neue Methoden implementieren?

    Ja.

    Kann ich in einem abstrakten Interface problemlos einen Zeiger auf ein anderes Interface definieren? (andres interface is somit mittels komposition im einen interface drin)

    Ich weiss nicht, ob ich dich richtig verstanden habe, aber ja. 😃

    und Wenn ich ein interface IA habe:
    und zwei Klassen A und AA die von IA erben dann kann/muss überall wo IA erwartet wird A oder AA verwendet werden. ?

    Streich das muss, dann ist die Antwort ja.

    MfG



  • Ist es richtig, dass sobald eine Methode rein virtuell (also mit virtual und = 0) ist, die Klasse abstrakt ist?

    Ja.

    Ist es richtig, dass wenn alle Methoden rein virtuell sind, es sich um ein Interface handelt?

    Kannst Du so betrachten wenn Du möchtest.

    Klassen die von der Interface Klasse erben müssen die rein virtuellen Methoden überschreiben. Dürfen die dann auch neue Methoden implementieren?

    Ja: entweder impl. oder sie bleiben abstrakt.
    Ja, neue Methoden dürfen auch impl. werden.

    Kann ich in einem abstrakten Interface problemlos einen Zeiger auf ein anderes Interface definieren? (andres interface is somit mittels komposition im einen interface drin)

    Ja. Bsp:

    struct A
    {
    	virtual void f() = 0;
    };
    
    struct B
    {
    	virtual A* g() = 0;
    };
    

    und Wenn ich ein interface IA habe:
    und zwei Klassen A und AA die von IA erben dann kann/muss überall wo IA erwartet wird A oder AA verwendet werden. ?

    Ja. Oder eine andere Klasse die IA impl.

    Edit: Oje.. ich bin ja vieeel zu langsam.



  • [quote="/rant/"]

    cryps schrieb:

    Hallo,
    Ich weiss nicht, ob ich dich richtig verstanden habe, aber ja. 😃

    was ich meine ist folgendes:
    Es gibt Interface IA
    und Interface IB

    in IA ist im public bereich ein zeiger definiert

    public:
    IB* myiBs;
    ..
    ..
    

    dann gibts eine Klasse A welche von IA erbt
    und eine Klasse B die von IB erbt.

    jetzt kann in Klasse A zum beispiel stehen:

    myIbs = new B();
    

    ist das zulässig?
    ich habe das beispiel jetzt stark vereinfacht... in meinem fall bekomm ich einen error wie das:
    expected type-specifier before B



  • in IA ist im public bereich ein zeiger definiert

    Würde ich nicht. Member Variablen gehören nicht ins interface.
    Guck mein Bsp.

    Simon


Anmelden zum Antworten