abstract class und Objekt erzeugen - Dringend Hilfe

Say

Aktives Mitglied
Hallo zusammen,

leider verstehe ich folgendes nicht und habe es auch in IDE versucht laufen zu lassen, aber komme nicht dahinter, warum b = 0 gesetzt wird. Wenn das Objekt A a = new B(2, 3); erzeugt wird, dann geht es zum Konstruktor B(int a, int b), weil es zwei Parameter beim Objekt hat und danach geht es zu super(a) und dieses ruft den Konstruktor von A auf und geht zu this.a = a, welches dann 2 ist. Dann wird 2 ausgegeben bei this. Anschliessend geht es doch zu this.b = b; Ist dann b = 0, weil es in Konstruktor b nicht init. wurde oder ist es 3, weil es bei der Objekterzeugung mitgegeben wurde? Dann geht es zu toString, welches 2 0 ausgibt, aber warum 0? Warum braucht es ein toString Methode, man könnte doch in der main einfach System.out.println machen oder nicht?

Java:
abstract class A {
    protected int a;
    public A(int a){
        this.a = a;
        System.out.print(this);
    }
}
class B extends A{
    private int b;
    public B(int a, int b){
        super(a);
        this.b = b;
    }
    public String toString(){
        return "Objekt B: " + a + b;
    }

    public static void main(String [] args){
        A a = new B(2,3);
    }
}
 

temi

Top Contributor
Warum probierst du es nicht aus und schreibst einen println(a) in die main()?

Dir wird schon nicht die Hand abfallen, wenn du das machst. :)

Du kannst auch noch an weiteren Stellen println() Befehle ergänzen, um den Ablauf zu verstehen.

Dann geht es zu toString

Ein Programm "geht" nicht einfach zu einer Methode. Damit eine Methode ausgeführt wird, muss sie aufgerufen werden. Die Methode toString() ist insofern besonders, dass du sie nicht explizit aufgerufen musst, Sie wird z. B. von println() intern aufgerufen, um die Ausgabe zu machen.
 

LimDul

Top Contributor
Es wird nicht b gleich 0 gesetzt. Du bist dem Problem schon sehr nah gekommen.

Dann wird 2 ausgegeben bei this
Das ist falsch. Es wird bei der Ausgabe die toString Methode aufgerufen - und zu diesem Zeitpunkt hat b noch keinen Wert gesetzt.
 

Say

Aktives Mitglied
Warum probierst du es nicht aus und schreibst einen println(a) in die main()?

Dir wird schon nicht die Hand abfallen, wenn du das machst. :)

Du kannst auch noch an weiteren Stellen println() Befehle ergänzen, um den Ablauf zu verstehen.



Ein Programm "geht" nicht einfach zu einer Methode. Damit eine Methode ausgeführt wird, muss sie aufgerufen werden. Die Methode toString() ist insofern besonders, dass du sie nicht explizit aufgerufen musst, Sie wird z. B. von println() intern aufgerufen, um die Ausgabe zu machen.
Danke für deine Antwort. Wenn ich in der main System.out.println hinzufügen, wird 2 3 angezeigt und wenn die toString aufgerufen wird, dann wird 2 0 angezeigt.
 

Say

Aktives Mitglied
Es wird nicht b gleich 0 gesetzt. Du bist dem Problem schon sehr nah gekommen.


Das ist falsch. Es wird bei der Ausgabe die toString Methode aufgerufen - und zu diesem Zeitpunkt hat b noch keinen Wert gesetzt.
Danke dir für deine Antwort. Also wird Zeile 5 gar nicht ausgeführt? Warum wird b zu diesem Zeitpunkt nicht init.? Verstehe ich nicht, im Objekt gebe ich doch b mit? Von der Subklasse gehe ich zu der Superklasse und komme wieder zur Zeile 10, dort wird doch this.b = b gesetzt oder nicht?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
B Fehler : class is abstract and does not overwrite Java Basics - Anfänger-Themen 2
T abstract class Java Basics - Anfänger-Themen 8
K <class> is not abstract and does not override abstract Java Basics - Anfänger-Themen 5
R abstract class <-> instance Java Basics - Anfänger-Themen 6
G Abstract Class - Abstract Method Java Basics - Anfänger-Themen 4
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
H abstract und interface Java Basics - Anfänger-Themen 4
H abstract - Wozu? Java Basics - Anfänger-Themen 6
B Interface vs Abstract Java Basics - Anfänger-Themen 2
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
S Compiler-Fehler not abstract and does not override Java Basics - Anfänger-Themen 9
M abstract method does not override or implement.... Java Basics - Anfänger-Themen 7
B klasse abstract Java Basics - Anfänger-Themen 9
R Wofür abstract? Java Basics - Anfänger-Themen 29
E Klasse abstract machen Java Basics - Anfänger-Themen 3
G Schlüsselworte Bedeutung von abstract Java Basics - Anfänger-Themen 2
C Liste mit Attribut Abstract vererben Java Basics - Anfänger-Themen 11
Y Theorie: Abstract Method Java Basics - Anfänger-Themen 6
P Problem mit Eclipse "must be declared as abstract" Java Basics - Anfänger-Themen 3
O Abstract Method & Generics Java Basics - Anfänger-Themen 10
B abstract static Java Basics - Anfänger-Themen 16
K abstract Java Basics - Anfänger-Themen 8
W abstract static Java Basics - Anfänger-Themen 3
F does not overwride abstract method Java Basics - Anfänger-Themen 2
G Verständnisfrage zum Interface und Abstract Java Basics - Anfänger-Themen 3
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
J abstract & Polymorphismus Java Basics - Anfänger-Themen 11
K Problem mit Abstract Table Model Java Basics - Anfänger-Themen 5
D Fehlermeldung "Time is not abstract" Java Basics - Anfänger-Themen 6
T Problem mit Abstract Windowing Toolkit(simples Problem) Java Basics - Anfänger-Themen 8
P Adaptor, Abstract Factory Java Basics - Anfänger-Themen 12
S Brauche Hilfe bei "abstract" Java Basics - Anfänger-Themen 12
G fenster abstract Java Basics - Anfänger-Themen 18
T IntelliJ / SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". Java Basics - Anfänger-Themen 4
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
123456789sssssaaaa Java Wrapper Class Java Basics - Anfänger-Themen 13
FHEFHJHFJH error: class names, 'summe_bsp', are only accepted if annotation processing is explicitly requested Java Basics - Anfänger-Themen 3
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J Methode als Class anlegen Java Basics - Anfänger-Themen 7
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
G Could not initialize class “NoClassDefFoundError" Java Basics - Anfänger-Themen 2
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
H .class Datei wird nicht ausgeführt Java Basics - Anfänger-Themen 2
H .jar unterschied .class Java Basics - Anfänger-Themen 3
J class version 52 und 56 Java Basics - Anfänger-Themen 6
L Fehler bei der AUsführung der .class Datei Java Basics - Anfänger-Themen 23
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
R HTTP-Links in Java Class finden Java Basics - Anfänger-Themen 3
D jsoup get class name mit leerzeichen Java Basics - Anfänger-Themen 7
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
N Fehlende .class Datei Java Basics - Anfänger-Themen 4
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
W Externe class in Eclipse importieren Java Basics - Anfänger-Themen 0
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
wilmaed protected class Java Basics - Anfänger-Themen 0
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
N class in class Java Basics - Anfänger-Themen 13
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
D Compiler-Fehler error: .class expected Java Basics - Anfänger-Themen 2
S Dataflow von Start bis die SystemProperties class Java Basics - Anfänger-Themen 1
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
M Scanner class Java Basics - Anfänger-Themen 6
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
P Compiler-Fehler Could not load or find main class fehler Java Basics - Anfänger-Themen 15
J Gestaltung der GUI.class Java Basics - Anfänger-Themen 1
P Compiler-Fehler could not find or load main class Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben