Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

überschriebene methoden mit referenzvariable des supertyps aufrufen

Empfohlene Antworten

hallo,

ich hab da mal ne frage.

folgender code


class A {


  void m1() {


    System.out.println("hallo du");


  }



}



class B extends A {


  void m1() {


     System.out.println("HALLO SIE");


  }

}


public class Test {


  public static void main(String[] args) {


   A a = new A();


   a.m1();


   }


}



jetzt ist meine frage welche methode aufgerufen wird. die überschriebene methode m1() oder die methode m1() aus der superklasse?

Guten Morgen,

die Antwort liegt doch auf der Hand. Geh mal logisch vor: Du deklarierst eine Klasse, die die Methode m1 hat. Dann leitest du eine weitere Klasse von dieser ab und überschreibst m1 - das ist in diesem Fall aber völlig bedeutungslos, da du eine Instanz von A erzeugst. Somit wird auch m1 aus A aufgerufen.

Bedeutung bekommt das Überschreiben einer Methode erst bei Vererbung und Polymorphie sprich, wenn du eine Instanz von B erzeugst und m1 aufrufst. Probier mal aus, was passiert, wenn du m1 aus B rausnimmst.

Ich ergänze mal:

Da jedes B auch ein A ist kann man folgendes machen:

A a = new B();

a.m1();

Die Antwort liegt ja auf der Hand und wurde auch genannt, aber mal 'ne ganz dumme Frage:

Warum führst du den Code nicht einfach aus? Das Codebeispiel dürfte in der Form prima kompilierbar sein.

Als Test.java speichern, javac anwerfen, java anwerfen.

Das ganze wäre (zumindest bei mir) schneller gewesen und du hättest ein klares Ergebnis in Form einer Konsolenausgabe gehabt.

Außerdem ist die Antwort auf deine Frage offensichtlich, kann es sein, dass du vielleicht was anderes wissen wolltest? Evtl. ein Methodenaufruf auf einem Objekt der Subklasse, der über eine Referenz des Typs der Superklasse gemacht wird?

ehm...ja das problem hat sich erledigt. ich bin gestern abend mit dem ganzen ein bißchen durcheinander gekommen. aber trotzdem danke euch beiden.

tschö

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.