Tracks
/
Java
Java
/
Übungen
/
Zauberer und Krieger 2
Zauberer und Krieger 2

Zauberer und Krieger 2

Lernübung

Einführung

Methodenüberladung

In Java ist die Methodenüberladung ein Feature, das einer Klasse erlaubt, mehr als eine Methode mit demselben Namen zu haben, wenn sich ihre Parameterlisten unterscheiden. Sie hängt mit der Polymorphie zur Compile-Zeit (oder statischen Polymorphie) zusammen. Dieses Konzept ist entscheidend, um Methoden zu erstellen, die ähnliche Aufgaben erledigen, aber mit unterschiedlichen Eingabewerten.

Warum Methoden überladen?

Methodenüberladung erhöht die Lesbarkeit des Programms. Verschiedene Methoden können denselben Namen bekommen, aber unterschiedliche Parameter haben. Je nach Anzahl oder Typ der Parameter wird die passende Methode aufgerufen.

Wie überlädt man Methoden?

Der Schlüssel zur Methodenüberladung ist die Signatur einer Methode. Zwei Methoden gelten als unterschiedlich, wenn sie unterschiedliche Signaturen haben. Es gibt zwei Möglichkeiten, eine Methode zu überladen:

  1. Unterschiedliche Anzahl an Parametern: Methoden können denselben Namen haben, aber eine unterschiedliche Anzahl an Parametern.

    public class Display {
    
        public void show(int x) {
            System.out.println("Show with int: " + x);
        }
    
        public void show(int x, int y) {
            System.out.println("Show with two ints: " + x + ", " + y);
        }
    }
    
  2. Unterschiedliche Parametertypen: Methoden können denselben Namen und dieselbe Anzahl an Parametern haben, aber unterschiedliche Typen.

    public class Display {
    
        public void show(int x) {
            System.out.println("Show with int: " + x);
        }
    
        public void show(String s) {
            System.out.println("Show with String: " + s);
        }
    }
    

Dinge, die du dir merken solltest

  • Überladene Methoden müssen die Argumentliste ändern.
  • Überladene Methoden können auch den Rückgabetyp ändern, aber eine bloße Änderung des Rückgabetyps ist noch keine Methodenüberladung.
  • Methoden können in derselben Klasse oder in einer Unterklasse überladen werden.

In diesem Konzept schauen wir uns verschiedene Beispiele und Feinheiten der Methodenüberladung in Java an.

Anleitung

In dieser Übung spielst du mit deinen besten Freunden ein Rollenspiel namens „Wizard and Warriors“. Du bist der Game Master, also die Person, die dafür sorgt, dass die Spielwelt für die Spieler lebendig wird. Ein wichtiger Aspekt dabei ist, den Spielern das Spiel zu beschreiben: Wie ist der Status eines Charakters, wie sieht die Stadt aus, die sie gerade besuchen, usw.

Du hast fünf Aufgaben, in denen du den Spielern Teile des Spiels beschreibst.

1. Beschreibe einen Charakter

Jeder Charakter hat eine Klasse, eine Stufe und eine Anzahl an Trefferpunkten und wird so beschrieben: "You're a level <LEVEL> <CLASS> with <HIT_POINTS> hit points.". Implementiere die Methode GameMaster.describe, die einen Character als einzigen Parameter entgegennimmt und seine Beschreibung zurückgibt.

Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);

new GameMaster().describe(character);
// => "You're a level 4 Wizard with 28 hit points."

2. Beschreibe ein Reiseziel

Jedes Reiseziel hat einen Namen und eine Anzahl an Einwohnern und wird so beschrieben: "You've arrived at <NAME>, which has <INHABITANTS> inhabitants.". Implementiere die Methode GameMaster.describe, die ein Destination als einzigen Parameter entgegennimmt und seine Beschreibung zurückgibt.

Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);

new GameMaster().describe(destination);
// => "You've arrived at Muros, which has 732 inhabitants."

3. Beschreibe die Reisemethode

Charaktere können auf eine von zwei Arten zu einem Reiseziel reisen:

  • Zu Fuß, beschrieben als: "You're traveling to your destination by walking."
  • Zu Pferd, beschrieben als: "You're traveling to your destination on horseback."

Implementiere die Methode GameMaster.describe, die eine TravelMethod als einzigen Parameter entgegennimmt und ihre Beschreibung zurückgibt.

new GameMaster().describe(TravelMethod.HORSEBACK);
// => "You're traveling to your destination on horseback."

4. Beschreibe einen Charakter, der zu einem Reiseziel reist

Wenn ein Charakter zu einem Reiseziel reist, wird das als Kombination der einzelnen Beschreibungen beschrieben: "<CHARACTER> <TRAVEL_METHOD> <DESTINATION>". Implementiere die Methode GameMaster.describe, die einen Character, ein Destination und eine TravelMethod als Parameter entgegennimmt und die Beschreibung zurückgibt.

Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);

Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);

new GameMaster().describe(character, destination, TravelMethod.HORSEBACK);
// => "You're a level 4 Wizard with 28 hit points. You're traveling to your destination on horseback. You've arrived at Muros, which has 732 inhabitants."

5. Beschreibe einen Charakter, der zu einem Reiseziel reist, ohne die Reisemethode anzugeben

In den meisten Fällen reisen Charaktere zu Fuß zu ihrem Reiseziel. Der Einfachheit halber dürfen Spieler ihre Reisemethode weglassen. In diesem Fall wird angenommen, dass sie zu Fuß unterwegs sind. Implementiere die Methode GameMaster.describe, die einen Character und ein Destination als Parameter entgegennimmt und die Beschreibung zurückgibt.

Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);

Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);

new GameMaster().describe(character, destination);
// => "You're a level 4 Wizard with 28 hit points. You're traveling to your destination by walking. You've arrived at Muros, which has 732 inhabitants."
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Java Exercism

Bereit, mit Zauberer und Krieger 2 zu starten?

Melde dich bei Exercism an, um Java mit 26 Konzepte158 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.