Überladen, Interfaces und Beobachtungsmuster

Haus00

Neues Mitglied
Ich bin JAVA-Anfänger und komme bei drei Teilaufgaben von ein paar Übungszetteln nicht weiter. Es gibt keine Musterlösung und auch wenig Anhaltspunkte in meinen Materialien. Ich hoffe ihr könnte mir ein paar Fragen klären.

Die erste geht um das Überladen von Methoden:

attachment.php


Meine Lösung:
KlasseA:
Java:
public class A {
 public void x() {
 System.out.println("hund");
 }
public A() {
 }
}

KlasseB:
Java:
public class B extends A {
 public void x() {
  System.out.println("katze");
}
public B() {
 super ();
}
}

KlasseM:
Java:
public class M {
public static void main (String[]args) {
 A obj1 = new A()
  obj1.x();
}
}

So nun zu meiner Frage: Wenn ich die Aufgabe so lösen würde, wäre dann nicht KlasseB vollkommen irrelevant? Bzw. Auf diese Weise "Überlade" ich doch nicht, sondern "Überschreibe"???

Die zweite Aufgabe bei der ich nicht weiterkomme, geht um Beobachtungsmuster. Da würde es mir helfen, wenn man mir einen Tipp geben kann wie ich da anfangen muss.
attachment.php


Bei der dritten Aufgabe, bin ich mir auch unsicher, ob meine Lösung so korrekt bzw. vollständig ist.

attachment.php


Meine Lösung (alles in einem):
PHP:
public class z
{
public void zMethode (String z)
{
...
}
}


public class y extends z impements x
{
pulic void xMethode (long x)
{
...
}
}


interface x
{
public void xMethode()
{ }
}


public class main
{
public static void main (String[]args) {
y object = new y();
 object.xMethode();
}
}
 

Anhänge

  • 3b p2.png
    3b p2.png
    33,1 KB · Aufrufe: 65
  • 4 p2.png
    4 p2.png
    26,3 KB · Aufrufe: 72

redJava99

Bekanntes Mitglied
zu (1):
So nun zu meiner Frage: Wenn ich die Aufgabe so lösen würde, wäre dann nicht KlasseB vollkommen irrelevant?
Ja. Aber welche Ausgabe bekommst du mit
Java:
A myA = new B();
myA.x();

Bzw. Auf diese Weise "Überlade" ich doch nicht, sondern "Überschreibe"???
Ja. Überladen ist etwas anderes und hängt mit den Parametern zusammen, nicht mit Vererbung.
 

Haus00

Neues Mitglied
Ja. Aber welche Ausgabe bekommst du mit
Java:
A myA = new B();
myA.x();

Dann erhalte ich die Ausgabe "Katze" und die Klasse B wäre nicht mehr irrelevant. Dankeschön.

Ja. Überladen ist etwas anderes und hängt mit den Parametern zusammen, nicht mit Vererbung.

Überladen wäre aber, wenn ich es z.B. so mache: (Vom Prinzip) Jedoch darf die Methode x() ja keinen Übergabeparameter haben, wie überlade ich die Methode den dann?
Java:
//Für Methoden
public void x() 
//überladene Methode
public void x(int xyz )
public void x(int xyz , int abc)

//Für Konstruktoren
public a() {
}
//überladene Konstruktoren
public a(String tier) {
 this.tier = tier; }

public a (String tier, String farbe) {
this.tier = tier;
this.farbe = farbe; }

Dankeschön. Das hilft mir schon einmal weiter :)
 

Joose

Top Contributor
Überladen wäre aber, wenn ich es z.B. so mache: (Vom Prinzip) Jedoch darf die Methode x() ja keinen Übergabeparameter haben, wie überlade ich die Methode den dann?

Wenn die Methode "x" keine Parameter haben darf, ist ein überladen nicht möglich.
Überladen bedeutet nichts anderes als die Methode in mehreren Varianten mit unterschiedlichen Parametern anzubieten.
Wobei sich hier die Anzahl der Parameter, die Typen der Parameter und die Reihenfolge der Parameter unterscheiden können
 
Zuletzt bearbeitet:

Neue Themen


Oben