Oberbergriff für class und interface

Status
Nicht offen für weitere Antworten.

Evolver

Bekanntes Mitglied
Ich suche einen Oberbegriff für 'class' und 'interface'. Asl wie würdet ihr eine Klasse nenn, von der die Klasse MyClass und MyInterface erben?
 
Interface ist der Oberbegriff von Klasse,

also MyClass würde von MyInterface erben
 
Evolver hat gesagt.:
Ich suche einen Oberbegriff für 'class' und 'interface'. Asl wie würdet ihr eine Klasse nenn, von der die Klasse MyClass und MyInterface erben?
Ein "Oberbegriff" hat imho nix mit "erben" zu tun! Der Oberbegriff für 'class' und 'interface' ist: 'type'
 
Leider sind die Begriffe in Java nicht so sauber getrennt; in der API-Doku zum java.lang.Class steht

Instances of the class Class represent classes and interfaces in a running Java application.

Es werden also Klassen und Interfaces über die Klasse Class abgebildet; ergo sind Interfaces in gewissem Sinne Klassen.
M.E. ist der beste gemeinsame Oberbegriff hier Typ(e) - in der Java-API findet sich das z.B. wieder in java.lang.reflect.Field#getType, was ein Object vom Typ java.lang.Class liefert (auch wenn die entsprechende Variablendeklaration ein Interface (und keine Klasse) referenziert).
 
Type gefällt mir nicht so schön, zwischenzeitlich hatte ich es jetzt anders gelöst.
Was würdet ihr von "Struktur" halten? MyClass und MyInterface erben von MyStructure.
 
bei dem begriff "Struktur" denke ich zuerst einmal an ein UML-Diagramm, dass die Basis Architektur den Programmes darstellt.
 
'type' ist der oberbegriff für datentypen. eine klasse oder interface ist kein typ, sondern die referenz auf eine instanz einer klasse ist ein 'type'.

MyClass c = new MyClass();

hier ist c ein 'type', nämlich eine referenz bzw. ein pointer.

der oberbegriff für class und interface ist schlicht "objekt". denn im grunde sind class und interface identisch. interface ist lediglich ein sondertyp von class, bei dem alle methoden abstract sind.

man könnte jetzt drüber streiten, ob man ein interface als objekt bezeichnen darf, da man von interfaces keine exemplare bzw. instanzen erzeugen kann, was manche als wichtiges merkmal eines objekts betrachten. da dies für die grundsätzliche betrachtung von objekten allerdings untergeordnet ist, behaupte ich schlicht, dass man auch ein interface als objekt bezeichnen darf. denn hier handelt es sich um eine spezialität von java, nicht von objektorientiertheit.
 
Gast hat gesagt.:
'type' ist der oberbegriff für datentypen. eine klasse oder interface ist kein typ, sondern die referenz auf eine instanz einer klasse ist ein 'type'.

(...)

der oberbegriff für class und interface ist schlicht "objekt". denn im grunde sind class und interface identisch. interface ist lediglich ein sondertyp von class, bei dem alle methoden abstract sind.

Üblicherweise würde man in Java doch wohl die Referenz auf eine Instanz einer Klasse Objekt nennen; Objekte sind eben Instanzen, während Klassen und Interfaces doch - unabhängig von einer konkreten Instanz bzw. einer Referenz darauf - Strukturen beschreiben. Dass man in Java Klassen und Interfaces wiederum als Objekte behandeln kann, ist eher ein Sonderfall.
 
Gast hat gesagt.:
Begriff für class und interface ist schlicht "objekt". denn im grunde sind class und interface identisch. interface ist lediglich ein sondertyp von class, bei dem alle methoden abstract sind.

Ein Interface ist genau das, was der Name schon sagt, nämlich eine Schnittstelle und beinhaltet nichts weiter als Methodenspezifikationen. Eine Klasse, die dieses Interface implementiert, garantiert, daß sie diese Methoden hat und man diese gefahrlos aufrufen kann. Dazu braucht man das eigentliche Objekt (den Typ) überhaupt nicht zu kennen, sondern nur zu wissen, ob es die Schnittstelle implementiert oder nicht.

Eine Klasse dagegen ist ein konkreter Bauplan für Objekte (den static-Kram außen vor gelassen).

Von daher würde ich mich schwer tun, für diese beiden unterschiedlichen Dinge einen gemeinsamen Oberbegriff zu finden.
 
"Struktur" ist hier imho zu allgemein als Oberbegriff.
Man könnte z.B. auch eine Struktur in einer Methode beschreiben (durch die Folge der Schleifen und Selektionen).
 
Wie wärs mit Typdefinition? Letztendlich werden ja Datentypen definiert... bzw. wozu brauchst Du überhaupt einen Oberbegriff?

Ansonsten ist es wie gesagt korrekt, einfach beides als Klasse zu bezeichnen, nur daß ein Interface halt eine gänzlich abstrakte Klasse darstellt.

Oder Du nennst es Objekt-Spezifikation, Blueprint, Bauplan, etc...
 
André Uhres hat gesagt.:
Yzebär hat gesagt.:
..Dazu braucht man.. (den Typ) überhaupt nicht zu kennen..
Eine Klasse, die eine Schnittstelle implementiert, ist vom Typ der Schnittstelle. Diesen Typ muss man natürlich kennen.

Mit etwas gutem Willen könnte man mir unterstellen, daß ich mit Typ die Klasse gemeint habe, die das Interface implementiert, aber du wirst es wahrscheinlich besser wissen...

Für mich ist eine Schnittstelle im Übrigen kein Typ, sondern nur eine Beschreibung oder Signatur zu einem Typen (im Sinne von: dieser Typ hat auf jeden Fall diese und jene Methoden). Wäre eine Schnittstelle ein Typ, könnte ich ja von ihr ableiten.
 
Yzebär hat gesagt.:
..Interfaces können ein Interface erweitern..
Siehste 😎

Den Oberbegriff "Typ" oder "Datentyp" wird oft noch eingeteilt in "elementarer Typ" und "Referenztyp".
Elementare Typen sind: boolean, int, short, float, ...
Klassen und Schnittstellen sind Referenztypen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben