Java Vererbung Fragen (zu Code Beispiel)

BobbyJean

Mitglied
Hallo liebe Community,
ich bin gerade dabei mich mit der Vererbung bei Java zu beschäftigen und um Dinge nachzuvollziehen gehe ich oft wie unten vor, ich schreibe relativ viele Kommentare im Code um mir zu merken "was was macht" und "was was ist" etc. :)

Beim folgenden Code Beispiel habe ich ein paar Probleme was den Ablauf angeht, ich versuche dann den Code mit dem Debugger (verwende Eclipse) zu öffnen um zu sehen wie die Schritte durchgegangen werden aber irgendwie hab ich hier Probleme das Ganze nachzuvollziehen:

Java:
//Basisklasse
class Basis2 {
   
    //Attribut:
    int b_wert;
   
    //Methode Basis2, b_wert wird auf 1 gesetzt:
    Basis2() {
        b_wert = 1;
    }
   
    //Werden Variablen mit final gekennzeichnet,
    //so sind sie nach der Initialisierung nicht mehr änderbar
    //Methode Basis2, als Parameter wird final double p übergeben:
    Basis2(final double p) {
        //b_wert wird auf ???
        b_wert = (int) p;
    }
   
    //Methode Basis2, als Parameter wird final int p übergeben:
    Basis2(final int p){
        //b_wert wird auf p gesetzt
        b_wert = p;
    }
   
}

    //mit extends wird Basis2 als Basisklasse verwendet:

class Abgeleitet extends Basis2 {
    //Attribut:
    int abg_wert;
   
    //Methode Abgeleitet, abg_wert wird auf 1 gesetzt:
    Abgeleitet() {
        abg_wert = 1;
    }
   
    //Hier werden Argumente an den Basisklassenkonstruktor weitergereicht:
    Abgeleitet(final int param1, final double param2){
        //mit super wird der Konstruktor der Basisklasse aufgerufen, param2 wird übergeben
        super(param2);
        //abg_wert wird auf param1 gesetzt:
        abg_wert = param1;
    }
}


//Main Methode, diese wird immer als erstes ausgeführt:
class Basisklassenkonstruktor {
    public static void main(final String[] args) {
        //Absatz:
        System.out.println();
       
        //Es wird nun ein neues Objekt mit dem Namen obj1 und dem Typ Abgeleitet angelegt
        final Abgeleitet obj1 = new Abgeleitet();
        System.out.println(" obj1 /n");
        System.out.println(" b_wert = " +obj1.b_wert);
        System.out.println(" abg_wert = " +obj1.abg_wert);
       
       
        //Es wird nun ein neues Objekt mit dem Namen obj2 und dem Typ Abgeleitet angelegt
        //es werden 2 Parameter übergeben: 22 und 11.90
        final Abgeleitet obj2 = new Abgeleitet(22, 11.90);
        System.out.println(" obj2 /n");
        System.out.println(" b_wert = " +obj2.b_wert);
        System.out.println(" abg_wert = " +obj2.abg_wert);
       
    }
}

meine Fragen wären:
1. Vielleicht könntet ihr mir was den Ablauf betrifft weiterhelfen und eine kurze Übersicht geben wie dieser hier ist
2. Diese Zeile versteh ich nicht ganz: "b_wert = (int) p;", hier wird meiner Meinung nach b_wert auf int p gesetzt. Warum ist das int in Klammern?
3. Falls ihr Ergänzungen/Tipps zu meinen Kommentaren im Code habt, ich in für jeden Tipp dankbar. Wie gesagt mir geht es grundsätzlich darum das Ganze nachzuvollziehen und ich bin der Meinung wenn man die Zeilen immer ein bisschen definiert und schreibt was so vorgeht fällt einem das Ganze leichter (oder was meint ihr?)

Vielen Dank schon mal für Eure Hilfe, falls Fragen bestehen immer her damit :)
 

Dimax

Top Contributor
1.Im class Basis 2 sind Konstruktoren beschrieben wie ein Objekt dieser classe erstellt wird
wenn mann Basis2 test=new Basis2(25.5); schreib nimmt Java
Basis2(final double p) {
//b_wert wird auf ???
b_wert = (int) p;
}
Variante usw..
2 b_wert = (int) p;-> einfaches Type Casting Variable p ist double b_wert ist int-> aus p wird int gemacht also nur ganzes Teil genommen.
 

Dimax

Top Contributor
Java:
//Basisklasse oder  Vaterklasse
class Basis2 {
 
    //Attribut:
    int b_wert;
 
    //Methode Basis2, b_wert wird auf 1 gesetzt: !Falsch Keine Methode-> Konstruktor-Unterschied im Namen
//Konstruktoren tragen immer gleichen Namen wie die Klasse selbst Methoden einer Klasse dürfen sowas nicht
    Basis2() {
        b_wert = 1;
    }
 
    //Werden Variablen mit final gekennzeichnet,
    //so sind sie nach der Initialisierung nicht mehr änderbar
    //Methode Basis2, als Parameter wird final double p übergeben: !Konstruktor Variante 2 mit double Parameter
    Basis2(final double p) {
        //b_wert wird auf ???
        b_wert = (int) p; // TypeCasting
    }
 
    //Methode Basis2, als Parameter wird final int p übergeben:// Konstruktor Variante 3
    Basis2(final int p){
        //b_wert wird auf p gesetzt //besser wird es zu sagen b_wert wird mit dem p wert initialisiert
        b_wert = p;
    }
 
}

    //mit extends wird Basis2 als Basisklasse verwendet:
/*besser zu sagen Die Vaterklasse Basis2 wird im Klass Abgeleitet
erweitert..also zu dem was die Klasse Basis2 gehabt hat werden zusätzliche Methoden Parameter oder Konstruktoren hinzugefügt oder vorhandene mit @Override überschrieben
*/
class Abgeleitet extends Basis2 {
    //Attribut:
    int abg_wert;
 
    //Methode Abgeleitet, abg_wert wird auf 1 gesetzt:
//besser mit 1 initialisiert weil sowie du schreibst ist 1 der Platzhalter für das Wort abg_wert
    Abgeleitet() {
        abg_wert = 1;
    }
 
    //Hier werden Argumente an den Basisklassenkonstruktor weitergereicht:
/* nein das ist ein neues Konstruktor der Klasse Abgeleitet der ein Konstruktor der Vaterklasse mit Basis2(double)
um ein zweites parameter erweitert*/
    Abgeleitet(final int param1, final double param2){
        //mit super wird der Konstruktor der Basisklasse aufgerufen, param2 wird übergeben
        super(param2);
        //abg_wert wird auf param1 gesetzt:
        abg_wert = param1;
    }
}


//Main Methode, diese wird immer als erstes ausgeführt:
class Basisklassenkonstruktor {
    public static void main(final String[] args) {
        //Absatz://Leerzeile wird gedrückt
      System.out.println();
  
        //Es wird nun ein neues Objekt mit dem Namen obj1 und dem Typ Abgeleitet angelegt
/*Es wird ein Objekt der Klasse Abgeleitet erstellt da aber die Klasse Abgeleitet kein Konstruktor ohne Parameter
hat wird der Konstruktor der Vaterklasse aufgerufen..so wie du erkannt hast mit super()
new Abgeleitet() bedeute neues Objekt was in Klammern steht ist entscheidend bei dem Konstruktor Auswahl
*/
        final Abgeleitet obj1 = new Abgeleitet();

        System.out.println(" obj1 /n");
        System.out.println(" b_wert = " +obj1.b_wert);
        System.out.println(" abg_wert = " +obj1.abg_wert);
  
  
        //Es wird nun ein neues Objekt mit dem Namen obj2 und dem Typ Abgeleitet angelegt
        //es werden 2 Parameter übergeben: 22 und 11.90
/* new Abgeleitet (int,double) zeigt Java welchen Konstruktor verwendet muss,also das ist der von der Kind Klasse
Abgeleitet weil Klasse Basis2 hat kein Konstruktor mit (int,double) also new Basis2(22,11.90) wird nicht funktionieren*/
        final Abgeleitet obj2 = new Abgeleitet(22, 11.90);
        System.out.println(" obj2 /n");
        System.out.println(" b_wert = " +obj2.b_wert);
     System.out.println(" abg_wert = " +obj2.abg_wert);
  
    }
}
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Fangen wir mal von hinten an.

Wenn Du einen Kommentar brauchst, um zu wissen, dass a=1 der Variablen a den Wert 1 zuweist, dann solltest Du Dich erst mit den Grundlagen vertraut(!) machen.

Solche Kommentare haben keinen Mehrwert und behindern nur das Lesen des Codes. Kommentare sind dazu da, zu beschreiben, WARUM man etwas gemacht hat, NICHT WAS man gemacht hat. Letzteres steht nämlich schon im Code.

Es mag am Anfang schwieriger sein, ohne solche Kommentare auszukommen. Du willst aber lernen, den Code zu lesen. Wenn Du wirklich etwas nachvollziehen musst und glaubst, mit Kommentaren besser zurecht zu kommen, dann würde ich die nur temporär dazuschreiben und hinterher wieder löschen.

Besser wäre es dagegen, wenn Du sinnvolle(re) Namen verwenden würdest. Basis2 ist doch sehr abstrakt, b_wert auch. Und abg_wert ist fast schon falsch, denn es ist gerade nicht der abgeleitete Wert, sondern ein neues Attribut, das in der abgeleiteten Klasse deklariert wurde. Nimm doch lieber was griffigeres, dann macht es das Lesen leichter.

Die Frage 2 hat @Dimax ja schon beantwortet. Hintergrund ist, dass es in Java nicht direkt möglich ist, eine Fließkommazahl (float oder double) einer Ganzzahl zuzuweisen, weil dadurch Informationen verloren gehen würden. D. h. man muss dem Compiler explizit mitteilen, dass er die Variable p, die vom Typ double ist, wie eine Variable vom Typ int behandeln soll. Dies geschieht, indem man den Zieltyp (hier: int) in Klammern vor dem Wert bzw. der Variablen schreibt. Genannt wird dieses Vorgehen (explicit) type-casting, auf Deutsch (explizite) Typumwandlung.

Wie "explizit" schon andeutet, gibt es auch eine implizite Form der Typumwandlung. Diese wird vom Compiler automatisch durchgeführt. Willst Du beispielsweise eine int- und eine double-Variable miteinander multiplizieren, behandelt der Compiler die int-Variable automatisch so, als wäre sie vom Typ double.

Zu Frage 1: was willst Du denn wissen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Java- Vererbung Java Basics - Anfänger-Themen 4
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
G Java Vererbung Java Basics - Anfänger-Themen 8
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
R Vererbung in java Java Basics - Anfänger-Themen 4
J Diverse Frag zu Vererbung innerhalb von Java Java Basics - Anfänger-Themen 6
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben