Frage

Warum kann ich nicht in der Lage statischen Typen von Methoden in der Schnittstelle angeben.

Gibt es eine Alternative, dies zu tun ??

, aber ich soll nur inerface insted der abstrakten Klasse.

/

Gibt es irgendein Problem in specifing acess Spezifizierer in-Schnittstelle?

Ich möchte die Ereignisse in Schnittstellen spezifizieren und das sollte nur durch implementiert Klasse acessed werden, so will ich geschützt acess Spezifizierer zu diesem Ereignis.

, und ich habe bestimmte Funktion, die Verwendung von Schnittstellen in einer anderen Klasse in diesem Fall machen wird, kann ich öffentlichen acess Spezifizierer verwenden kann.

War es hilfreich?

Lösung

Ich weiß nicht, welche Sprache Sie nimmt, aber ich werde wie in C # beantworten.

Warum ich nicht in der Lage kann statische Art von Methoden in der Schnittstelle zu spezifizieren. Gibt es eine Alternative, dies zu tun ??

Es ist, weil Sie nicht statische Methoden außer Kraft setzen können. Was wollen Sie erreichen?

Mitglieder in Schnittstellen sind in C # immer öffentlich. Wenn Sie andere Schutzstufen haben müssen, eine abstrakte Klasse verwenden. Was wäre der Zweck der geschützten Ereignisse, wenn man sie nicht von der Schnittstelle zugreifen kann? Es hat nichts mit der Schnittstelle zu tun dann (denken Sie daran, kann die Schnittstelle hat keinen Code). Wenn Sie, dass nur implementierenden Klassen beziehen sich die Ereignisse auslösen können, sicher sein, dass sie die einzigen sind, die sie auslösen kann. Die Ereignisse werden auf diese Weise gebaut - nur die Klasse selbst Ereignisse auslösen können. Sie können nicht ein Ereignis externer aus der Klasse erhöhen (außer, wenn Sie eine Methode für die Klasse haben, das das Ereignis auslöst).

Andere Tipps

Schnittstellen nur Ihren implementator an die Öffentlichkeit beschreiben. Der einzige Zugang Modifikator für eine Schnittstelle ist „intern“ an der Schnittstelle selbst, das es sich um eine intertface nur sichtbar für alle Mitglieder derselben Baugruppe oder die Falsifikate bekannt mit dem „InternalsVisibleTo“ -Attribut macht.

Wenn nur implementators ein bestimmtes Ereignis sehen soll, dann ist das Ereignis würde in einer Art Basisklasse sein.

Eine statische Methode ist so ziemlich ein Überbleibsel der prozeduralen Programmierung. sie tun, um ihre Verwendung haben (siehe zum Beispiel Erweiterungsmethoden), aber wirklich nicht viel mit OOP zu tun.

Ich bin bei Verlust auf, was Sie mit der ersten Frage bedeuten, aber Ihre zweite Frage zu in Schnittstellen geschützt zu verwenden ist ein gerade „nein“. Schnittstellen sind „Schnittstellen“ genannt, weil sie die „Schnittstelle“ (das heißt öffentliche Methoden) angeben, in dem Sie mit diesem Objekt kommunizieren kann.

Meine Erfahrung mit OOP ist in Bezug auf Actionscript 3, aber ich bin sicher, es ist relativ.

Statische Methoden nicht außer Kraft gesetzt werden können und sie nicht verwendet werden, wenn eine Klasse der Vorfahr-Klasse erweitert.

Zugriffsmodifikatoren werden in der Schnittstelle nicht verwendet, da die Schnittstelle zum Einrichten der PUBLIC Methoden verwendet wird.

In AS3 eine Schnittstelle ist lediglich eine Methodensignatur ohne Block, aber einschließlich Datentypen.

Es ist wichtig, dass die Getter / Setter-Methode Signaturen zu beachten, kann auch in einer Schnittstelle verwendet werden. Diese sind nützlich, und wenn Sie nur einen Setter verwenden Sie einen schreibgeschützten öffentlichen Zugang zu einem privaten verkapselt Variable erstellt haben.

Was Schnittstelle statt einer abstrakten Klasse, es hängt alles davon ab, wie Sie Ihren Code zu implementieren. Oft und Schnittstelle und eine abstrakte Klasse gemeinsam verwendet werden unterschiedliche Ergebnisse zu erzielen Vererbung und Polymorphismus nutzen (erweitert / implementiert).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top