CodeGym
Aktion
CodeGym University
Lernen
Kurs
Aufgaben
Umfragen & Quizze
Spiele
Hilfe
Zeitplan für einen Tritt in den Hintern
Community
Benutzer
Forum
Chat
Artikel
Erfolgsstorys
Aktivität
Rezensionen
Abonnements
Helles Design
Frage
  • Rezensionen
  • Über uns
Start
Jetzt lernen
Jetzt lernen
  • Alle Fragen
hidden #10625598
Level 23
  • 03.06.2020
  • 390Aufrufe
  • 6Kommentare

wie kann ich die dance methode aufrufen wenn beide von dem Person interface erben?

Frage zur Aufgabe Spieler und Tänzer
Java Core,  Level 4,  Lektion 4
In der Diskussion


1. Denke darüber nach, was das Programm tut.
2. Ändere die Methode haveFun so, dass sie folgendes aufruft:
- die play-Methode, wenn die Person ein Player ist.
- die dance-Methode, wenn die Person ein Dancer ist.

Anforderungen:
  • Die Player-Klasse muss das Person-Interface implementieren.
  • Die Dancer-Klasse muss das Person-Interface implementieren.
  • Die haveFun-Methode muss die play-Methode aufrufen, wenn das übergebene Objekt ein Player ist.
  • Die haveFun-Methode muss die dance-Methode aufrufen, wenn das übergebene Objekt ein Dancer ist.
  • Die main-Methode muss Daten von der Tastatur lesen.
  • Die main-Methode muss das Lesen von Daten von der Tastatur beenden, wenn der Eingabestring „exit“ ist.
package de.codegym.task.task14.task1407; import java.io.BufferedReader; import java.io.InputStreamReader; /* Spieler und Tänzer */ public class Solution { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); Person person = null; String key; while (!(key = reader.readLine()).equals("exit")) { if ("player".equals(key)) { person = new Player(); } else if ("dancer".equals(key)) { person = new Dancer(); } haveFun(person); } } public static void haveFun(Person person) { //schreib hier deinen Code if(person instanceof Player){ person.play(); }else if(person instanceof Dancer){ person.dance(); } } interface Person { void play(); //void dance(); } static class Player extends Dancer implements Person { void play() { System.out.println("spielen"); } } static class Dancer implements Person { void dance() { System.out.println("tanzen"); } } }
0
Kommentare (6)
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Artem Divertitto Senior Android Developer bei United Tech
4 Juni 2020, 13:42
1. interface Person shouldn't has methods inside 2. Player isn't dancer, you don't need inherit from Dancer 3. Inside method haveFun if you want to call methods from specific realization, you should cast parametr, like:
((Player)person).play();
0
hidden #10625598
Level 23
4 Juni 2020, 13:49
nice thank you!
0
Thomas
Level 31 , Bayreuth, Germany
4 Juni 2020, 07:03
Wenn ein Dancer als Person herumläuft, hat er nur Zugriff auf die Methoden, die Person kennt. Um alle Methoden des Dancers zu haben musst du.... casten
+1
hidden #10625598
Level 23
4 Juni 2020, 11:56
okay typenumwandlung, von was genau? Person muss doch play und dance haben? was muss ich denn casten??
0
Thomas
Level 31 , Bayreuth, Germany
4 Juni 2020, 12:40
Mach am Besten mal einen Reset des Tasks. Das Person Interface deklariert keine Methoden und das sollte so bleiben. Laut Anweisungen nur die haveFun Methode ändern. Da Person nichts von dance und play weiß, musst du die Referenzvariable vom Typ Person, die auf ein Objekt vom Typ Dancer oder Player weist casten, und zwar in ein Ref.var., die mit diesen Methoden umgehen kann. Gibt es ja nicht so viele zur Auswahl.
0
Sakka Mouid
Level 19 , Hannover, Deutschland
10 April 2022, 20:19
Danke für die Erklärung
0
Lernen
  • Registrierung
  • Java-Kurs
  • Hilfe zu Aufgaben
  • Preise
  • Spieleprojekte
  • Java Syntax
Community
  • Benutzer
  • Artikel
  • Forum
  • Chat
  • Erfolgsstorys
  • Aktivität
  • Affiliate Program
Unternehmen
  • Über uns
  • Kontakt
  • Rezensionen
  • Medien
  • CodeGym im Bildungsbereich
  • FAQ
  • Support
CodeGym CodeGym ist ein Java-Tutorial zum Lernen von Java von Grund auf. Dieser Kurs ist perfekt dafür geeignet, Java von Beginn an zu meistern. Er enthält über 1200 Aufgaben mit Sofortüberprüfung und grundlegende Theorie zu den Java-Grundlagen. Damit auch du bei deinem Kurs erfolgreich bist, haben wir eine ganze Reihe motivierender Inhalte: Quizfragen, Programmierprojekte, Inhalte zu effizientem Lernen und zum Berufseinstieg als Java-Entwickler.
Folgen
Sprache der Oberfläche
Programmierer werden gemacht, nicht geboren © 2023 CodeGym
MastercardVisa
Programmierer werden gemacht, nicht geboren © 2023 CodeGym
This website uses cookies to provide you with personalized service. By using this website, you agree to our use of cookies. If you require more details, please read our Terms and Policy.