Beispiele und Übungsaufgaben zu Klassendeklarationen in Java. (), Beispiel, Seite 721529
https://www.purl.org/stefan_ram/pub/java_beispiel_klasse_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Schnittstellendeklarationen in Java 

Man kann keine Objekte einer Schnittstelle (getClass) anlegen, sondern nur Exemplare dieser Schnittstelle (instanceof).

Alle Methoden einer Schnittstelle sind public. Daher ist die Angabe »public« vor einer Methodendeklaration in einer Schnittstelle überflüssig. Sie kann aber bequem sein, weil die Deklaration der abstrakten Methode dann kopiert werden kann, wenn jemand eine Implementation diese Methode schreiben will, die ja mit »public« beginnen muß.

Die Methodendeklarationen einer Schnittstelle haben an Stelle des Rumpfs ein Semikolon. Sie werden daher auch als abstrakte Methoden bezeichnet.

Die final-Festlegung für einen Parameter ist kein Teil der Schnittstelle einer Methode und muß daher auch nicht in der Schnittstellendeklaration wiederholt werden.

Mit der Annotation »@java.lang.Override« wird erklärt, daß eine Methode ein Methodenbeschreibung aus einer Schnittstelle implementieren soll.

Main.java

interface Alpha
{ void writeln( int a ); }

interface Beta
{ public void writeln( final int a ); }

class Alpha0 implements Alpha, Beta
{ @java.lang.Override public void writeln( final int a )
{ java.lang.System.out.println( a ); }}

public final class Main
{ public static void main( final java.lang.String[] args )
{ final Alpha alpha = new Alpha0();
java.lang.System.out.println( alpha.getClass() );
java.lang.System.out.println( alpha instanceof Alpha );
alpha.writeln( 2 ); }}

transcript
class Alpha0
true
2

Eine Schnittstelle kann zwar auch statische Methoden enthalten, aber diese gehören zur der Schnittstelle, wenn sie als Typ von Ausdrücken oder hinter »implements« verwendet wird. Eine Schnittstelle kann also keinen Vorgaben für statische Methoden einer sie implementierenden Klasse machen.

Konstanten in Schnittstellen

Konstanten in Schnittstellen sind erlaubt, auch wenn sie nicht abstrakt sind. Sie werden meist groß geschrieben.

Main.java

interface Alpha
{ public final int PI = 3; }

public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( Alpha.PI ); }}

transcript
3

Konstanten von Schnittstellen werden von der JLS  auch so bezeichnet (JLS8, 9.3 Field (Constant) Declarations).

Fehlimplementation in Schnittstellen

Eine Fehlimplementation einer Schnittstelle wird mit »default« gekennzeichnet und übernommen, falls sie nicht von einer implementierenden Klasse ersetzt wird.

Main.java

interface Alpha
{ default void writeln( final int a )
{ java.lang.System.out.println( a ); }}

class Alpha0 implements Alpha
{ }

public final class Main
{ public static void main( final java.lang.String[] args )
{ final Alpha alpha = new Alpha0();
java.lang.System.out.println( alpha.getClass() );
java.lang.System.out.println( alpha instanceof Alpha );
alpha.writeln( 4 ); }}

transcript
class Alpha0
true
4

Statische Methoden in Schnittstellen

Schnittstellendeklarationen können auch Deklarationen statischer Methoden enthalten. Diese werden aber nicht Teil der Methoden, welche von einer die Schnittstelle implementierenden Klasse implementiert werden müssen. Sie gehören sozusagen nicht zur „Schnittstelle der Schnittstelle“, die nur aus nicht-statischen abstrakten Methoden besteht.

Übungsaufgaben

Schreiben Sie zu dem folgenden Programm eine Schnittstellendeklaration mit möglichst wenigen abstrakten Methoden, so daß das Programm wie gezeigt läuft.

Main.java

/* Hier die Schnittstellendeklaration einfügen */

class Writer implements Smallest
{ public void write( final int a )
{ java.lang.System.out.print( a ); }

public void writeln( final int a )
{ java.lang.System.out.println( a ); }}

public final class Main
{ public static void main( final java.lang.String[] args )
{ final Smallest smallest = new Writer();
writer.writeln( 4 ); }}

transcript
4

Schreiben Sie zu dem folgenden Programm eine Schnittstellendeklaration mit möglichst vielen abstrakten Methoden, so daß das Programm wie gezeigt läuft.

Main.java

/* Hier die Schnittstellendeklaration einfügen */

class Console implements Largest
{ public void write( final int a )
{ java.lang.System.out.print( a ); }

public void writeln( final int a )
{ java.lang.System.out.println( a ); }}

class Writer implements Largest
{ public void write( final int a )
{ java.lang.System.out.print( a ); }

public void writeQuoted( final int a )
{ java.lang.System.out.println( "'" + a + "'" ); }}

public final class Main
{ public static void main( final java.lang.String[] args )
{ final Writer writer = new Writer();
writer.writeQuoted( 2 ); }}

transcript

'2'

Markierungsschnittstellen

Zur Markierung von Klassen kann eine Markierungsschnittstelle  (tagging interface ) verwendet werden. Hierbei handelt es sich um eine Schnittstelle, die gar keine Einträge zu enthalten braucht, aber alle Klassen, die sie implementieren, in einer Weise kennzeichnet, die mit dem Operator "instanceof" ermittelt werden kann. So könnte ein Programmierer alle seine Klassen durch die Markierungsschnittstelle "I" kennzeichnet. Dann kann bei Bedarf mit dem Ausdrucksteil "instanceof I" ermittelt werden, ob eine Klasse von diesem Programmierer stammt.

Die Markierung kann auch indirekt dadurch erfolgen, daß eine Schnittstelle implementiert wird, welche die Markierungsschnittstelle erweitert. So ist in dem Programmbeispiel "Tagging.java" die Klasse "A" direkt und die Klasse "B" indirekt mit der Markierungsschnittstelle "I" gekennzeichnet.

Tagging.java
public final class Tagging { public static void main( final java.lang.String[] args ) 
{ java.lang.System.out.println( new A() instanceof I );  
java.lang.System.out.println( new B() instanceof I ); 
java.lang.System.out.println( new C() instanceof I ); }}
class A implements I {}
class B implements J {}
class C {}
interface J extends I {}
interface I {}

System.out
true 
true 
false

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721529 stefan_ram:721529 source, source code,sourcecode, Programmier sprache java, Java Programm Java Programmiersprache Java Sprache Java Programmierung Programmieren in Java, Die Programmiersprache Java Javapgrammierung, Java-Programmierung, Java2, Java1.2, Java1.3, Java1.4, Java1.5, Java 2, Java 1.2, Java 1.3, Java 1.4, Java 1.5, Java 1.6, Java 1.7, Java 1.8, Java 8, Java 1.9, Java 9, Java 1.10, Java 10, Tiger, Dolphin, objektorientierte Programmierung, Java sun, , Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721529, slrprddef721529, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/java_beispiel_klasse_de