Variablen in der Schnittstelle

8

Warum ist eine Variable, die in einer Schnittstelle verwendet wird, PUBLIC STATIC FINAL? Warum "statisch" im Besonderen?

    
Sandeep 07.12.2009, 07:23
quelle

5 Antworten

20
___ qstnhdr ___ Variablen in der Schnittstelle ___ answer1858391 ___

Warum wäre es nicht statisch?

Es ist eine Konstante, die mit der Schnittstelle verbunden ist, und nicht mit einer bestimmten Instanz davon.

    
___ answer1858432 ___

Der Hauptgrund, den ich vermute, ist das Implementierungsdetail der VM / Sprache.

Wenn eine Schnittstelle keine statischen Variablen haben darf, ist es nicht erforderlich, während der Erstellung der Klasse Speicher für die Schnittstelle zuzuweisen. Spezielle Benennungs- / Umbenennungsmechanismen sind nicht erforderlich, wenn Sie Variablen mit demselben Namen erben. Das einzige, was Sie brauchen, ist eine Tabelle, um die richtigen Funktionen aufzurufen, wenn die Schnittstelle benutzt wird.

Kurz gesagt - es erleichtert das Leben der Sprache / VM-Betreuer. Wenn Sie sich wirklich die Mehrfachvererbung und ihre Fallstricke und Fallen ansehen wollen, lesen Sie Object Oriented Software Construction von Bertrand Meyer (2nd Edition). Dann verstehen Sie, warum die Schnittstelle so einfach sein muss (und archiviert dennoch die meisten Dinge, die Mehrfachvererbung tut).

    
___ answer28255166 ___
  

Eine Schnittstelle ist ein Vertrag , der die Interaktion zwischen Objekten definiert.

Diese Interaktion wird durch die exponierten Methoden und nicht durch die Variablen definiert. Variablen beschreiben nur das interne Arbeiten, nicht die Interaktion.

Beachten Sie, dass Variablen niemals für die Interaktion verwendet werden sollten. Nach dem OOP-Prinzip Kapselung wäre es ein Verbrechen, wenn 1 Klasse direkt auf eine Variable einer anderen Klasse zugreifen könnte.

Konstanten (z.B. %code% ) sind die einzige akzeptable Ausnahme. Da -Konstanten die einzige Art von Variablen sind, auf die direkt von anderen Klassen zugegriffen werden kann, ohne das Kapselungsprinzip zu verletzen , werden alle Variablen in einer Schnittstelle als %code% variables (d. H. Konstanten)

behandelt     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123interface ___ Eine Schnittstelle bezieht sich auf den Interaktionspunkt zwischen Komponenten. Schnittstellen sind sowohl auf der Hardware- als auch auf der Softwareebene anwendbar. Im Allgemeinen stellt eine Schnittstelle einen Vertrag offen, ohne die zugrunde liegenden Implementierungsdetails offenzulegen. In objektorientierter Programmierung definieren Schnittstellen abstrakte Typen, die das Verhalten offen legen, aber keine Logik enthalten. Die Implementierung wird durch die Klasse oder den Typ definiert, der die Schnittstelle implementiert. ___ tag123static ___ Statisch ist ein in einigen Programmiersprachen verwendeter Begriff, um eine Funktion oder einen Datenspeicherbereich (Feld) zu definieren, der nicht an eine bestimmte Objektinstanz gebunden ist. In den meisten Fällen sollte dieses Tag, falls verwendet, in Verbindung mit einem spezifischen Programmiersprachen-Tag verwendet werden. ___ answer1858390 ___

Weil Sie eine Schnittstelle nicht instanziieren können. Es kann auch keinen Methodenkörper geben, der eine nicht statische, nicht endgültige Variable verwendet.

    
___ qstntxt ___

Warum ist eine Variable, die in einer Schnittstelle verwendet wird, PUBLIC STATIC FINAL? Warum "statisch" im Besonderen?

    
___
Jon Skeet 07.12.2009, 07:27
quelle
6

Weil Sie eine Schnittstelle nicht instanziieren können. Es kann auch keinen Methodenkörper geben, der eine nicht statische, nicht endgültige Variable verwendet.

    
fastcodejava 07.12.2009 07:26
quelle
3

Warum wäre es nicht statisch?

Es ist eine Konstante, die mit der Schnittstelle verbunden ist, und nicht mit einer bestimmten Instanz davon.

    
Anon. 07.12.2009 07:26
quelle
3

Der Hauptgrund, den ich vermute, ist das Implementierungsdetail der VM / Sprache.

Wenn eine Schnittstelle keine statischen Variablen haben darf, ist es nicht erforderlich, während der Erstellung der Klasse Speicher für die Schnittstelle zuzuweisen. Spezielle Benennungs- / Umbenennungsmechanismen sind nicht erforderlich, wenn Sie Variablen mit demselben Namen erben. Das einzige, was Sie brauchen, ist eine Tabelle, um die richtigen Funktionen aufzurufen, wenn die Schnittstelle benutzt wird.

Kurz gesagt - es erleichtert das Leben der Sprache / VM-Betreuer. Wenn Sie sich wirklich die Mehrfachvererbung und ihre Fallstricke und Fallen ansehen wollen, lesen Sie Object Oriented Software Construction von Bertrand Meyer (2nd Edition). Dann verstehen Sie, warum die Schnittstelle so einfach sein muss (und archiviert dennoch die meisten Dinge, die Mehrfachvererbung tut).

    
Tobias Langner 07.12.2009 07:39
quelle
2
  

Eine Schnittstelle ist ein Vertrag , der die Interaktion zwischen Objekten definiert.

Diese Interaktion wird durch die exponierten Methoden und nicht durch die Variablen definiert. Variablen beschreiben nur das interne Arbeiten, nicht die Interaktion.

Beachten Sie, dass Variablen niemals für die Interaktion verwendet werden sollten. Nach dem OOP-Prinzip Kapselung wäre es ein Verbrechen, wenn 1 Klasse direkt auf eine Variable einer anderen Klasse zugreifen könnte.

Konstanten (z.B. Math.PI ) sind die einzige akzeptable Ausnahme. Da -Konstanten die einzige Art von Variablen sind, auf die direkt von anderen Klassen zugegriffen werden kann, ohne das Kapselungsprinzip zu verletzen , werden alle Variablen in einer Schnittstelle als public static final variables (d. H. Konstanten)

behandelt     
bvdb 31.01.2015 18:42
quelle

Tags und Links