Einführung in die Überladung von Methodennamen in Java im Rahmen der Lehre des Programmierens mit der Programmiersprache Java. [] (Java Überladung von Methoden), Lektion, Seite 721544
https://www.purl.org/stefan_ram/pub/java_methodennamenueberladungen_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Die Überladung von Methodennamen in Java

Überladung

Mehrere verschiedene  Methoden dürfen mit demselben  Namen (unten »p«) definiert werden, wenn sich die Anzahl oder der Typ ihrer Parameter hinreichend unterscheidet.

Main.java

public final class Main
{

public static void p()
{ java.lang.System.out.println(); }

public static void p( final java.lang.String text )
{ java.lang.System.out.println( text ); }

public static void main( final java.lang.String[] args )
{ p( "Alpha" ); p(); p( "Beta" ); }}

java.lang.System.out

Alpha

Beta

In dem obigen Beispielprogramm wird zuerst die Methode mit der Signatur »p(java.lang.String)«, dann die Methode mit der Signatur »p()« und schließlich wieder die Methode mit der Signatur »p(java.lang.String)« aufgerufen.

Mehrere Methoden

Ein einfacher Methodenname kann auch für mehrere Methoden  verwendet werden, wenn diese sich in ihrem Parametertyp  unterscheiden.

Main.java
public final class Main
{ public static java.lang.String type( final int i ){ return "int"; }
public static java.lang.String type( final double x ){ return "double"; }
public static java.lang.String type( final java.lang.String s ){ return "java.lang.String"; }
public static void main( java.lang.String[] args )
{ java.lang.System.out.println( type( 1. ));
java.lang.System.out.println( type( 1 ));
java.lang.System.out.println( type( "a" )); }}
java.lang.System.out
double
int
java.lang.String

Es ist allerdings nicht immer möglich, den Typ von Ausdrücken auf die hier gezeigte Weise zu erkennen. Dies geht aber beispielsweise, wenn es nur darum geht, die drei oben gezeigten Typen zu unterscheiden.

Main.java

public final class Main
{

public static void printDouble( final double wert )
{ java.lang.System.out.print( " Kommazahl: " + wert ); }

public static void printInt( final int wert )
{ java.lang.System.out.print( "ganze Zahl: " + wert ); }

public static void main( final java.lang.String[] args )
{ printInt( 3 ); java.lang.System.out.println();
printDouble( 3.14 ); java.lang.System.out.println(); }}

java.lang.System.out
ganze Zahl: 3
Kommazahl: 3.14

Wenn zwei oder mehr Definitionen für einen Bezeichner im selben Bereich gelten, dann sagt man auch, diese Bezeichner sei überladen. Ein überladener Methodenname gehört also zu mehreren, verschiedenen Methoden. Wenn ein überladener Methodenname auf Argumente angewendet wird, dann wird der Typ der Argumente mit dem Typ der Parameter der Methoden mit diesem Namen verglichen, um die anzuwendende Methode zu bestimmen.

Mehrere Methoden die innerhalb eines Gültigkeitsbereichs den gleichen Namen teilen müssen sich in ihrer Signatur unterscheiden, sie müssen sich also in der Zahl oder wenigstens dem Datentyp ihrer Parameter ausreichend unterscheiden.

In dem folgenden Beispiel werden zwei Methoden mit dem Bezeichner "print" definiert, deren Argument vom Typ "int" bzw. vom Typ "double" ist.

Main.java

public final class Main
{

public static void print( final double wert )
{ java.lang.System.out.print( " Kommazahl: " + wert ); }

public static void print( final int wert )
{ java.lang.System.out.print( "ganze Zahl: " + wert ); }

public static void main( final java.lang.String[] args )
{ print( 3 ); java.lang.System.out.println();
print( 3.14 ); java.lang.System.out.println(); }}

java.lang.System.out
ganze Zahl: 3
Kommazahl: 3.14

Ohne die Möglichkeit der Methodennamensüberladung, müßte man den beiden Methoden verschiedene  Namen geben. Die Namen wären so aber mühevoller zu erlernen und ihre Verschiedenheit wäre unpassend, wenn sie das gleiche  Konzept darstellen, nur für unterschiedliche  Datentypen. Die Methodennamensüberladung erlaubt hier eine viel natürlichere Formulierung unter Beibehaltung der Typstrenge, durch die Kontrolle der Verwendung von Ausdrücken anhand ihres Datentyps bei der maschinellen Analyse eines Java -Programms.

Erweiterung von Methoden

Eine Anwendung der Überladung von Methodennamen ist die Möglichkeit zur kompatiblen Erweiterung von Methodenschnittstellen. Eine Methode mag zunächst beispielsweise zwei Parameter haben. Es kann sich dann aber später herausstellen, daß es hilfreich wäre, einen weiteren Parameter zu der Methode hinzuzufügen. Dann müßte alle Klienten der Methode aber entsprechend angepaßt werden, was nicht immer möglich ist.

Dank der Möglichkeit zur Überladung von Methodennamen kann dann aber eine weitere Methode mit gleichem Namen und einem zusätzlichen Parameter definiert werden, ohne daß die bisher schon existierende Methodendefinition mit zwei Parametern dazu verändert werden muß. Dann können die bisherigen Klienten weiterhin die bisherige Methode mit zwei Parametern verwenden, während neuere Klienten die neue Methode mit drei Parametern verwenden können.

Methode namens »main«

Auch die Methode »main« darf überladen werden. Beim Programmstart wird immer »main( java.lang.String[] args )« aufgerufen.

Main.java

public final class Main
{

public static void main()
{ java.lang.System.out.println( "main() was called.\n" ); }

public static void main( final java.lang.String[] args )
{ main(); }}

transcript
main() was called.

Übungsfragen

?   Ausgabe vorhersagen

Was ist die Ausgabe des folgenden Programms?

Main.java

public final class Main
{ public static int f( ){ return 0; }
public static java.lang.String f( final double x ){ return "alpha"; }
public static double f( final int x ){ return 1; }

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

?   Ausgabe vorhersagen (1)

Was ist die Ausgabe des folgenden Programms?

public final class Main
{

public static void m( final int i )
{ java.lang.System.out.println( i ); }

public static int m()
{ return 12; }

public static void main( final java.lang.String[] args )
{ m( m() ); }}

?   Ausgabe vorhersagen (2)

Was ist die Ausgabe des folgenden Programms?

public final class Main
{

public static void m( final int i )
{ java.lang.System.out.println( "3" ); }

public static int m()
{ java.lang.System.out.println( "4" );
return 12; }

public static void main( final java.lang.String[] args )
{ m( m() ); }}

Übungsaufgaben

/   »println« definieren

Schreiben Sie eine Deklaration einer println-Methode mit einem String-Parameter und einer println-Methode mit einem double-Parameter in das folgende Programm, so daß das Programm dann »alpha« und »3« auf je einer Zeile ausgibt. (Die Methode »main« soll dabei nicht verändert werden.)

public final class Main
{

/* Hier Methodendeklarationen einfügen */

public static void main( final java.lang.String[] args )
{ println( "alpha" );
println( 3 ); }}

/   »printtype« definieren

Definieren Sie zwei Wirkmethoden "printtype" jeweils für ein Argument vom Datentyp "int" und vom Datentyp "double". Jede Wirkmethode soll den Namen des Datentyps  ihres Argumentes ausgeben.

Main.java

public final class Main
{ // ... Hier Wirkmethoden definieren

public static void main( final java.lang.String[] args )
{ printtype( 0 ); java.lang.System.out.println();
printtype( 3.1415926 ); java.lang.System.out.println(); }}

java.lang.System.out
int
double

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 stefanram721544 stefan_ram:721544 Java Überladung von Methoden 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, 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, slrprd721544, slrprddef721544, 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_methodennamenueberladungen_de