Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Ausgabe bei Ausführung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Ausgabe bei Ausführung
Beiträge zu diesem Thema Autor Datum
 Ausgabe bei Ausführung neuling96 28.12.2014 01:07
 RE: Ausgabe bei Ausführung eulerscheZahl 28.12.2014 08:00
 RE: Ausgabe bei Ausführung neuling96 28.12.2014 08:04
 RE: Ausgabe bei Ausführung neuling96 24.01.2015 01:37
 RE: Ausgabe bei Ausführung eulerscheZahl 28.12.2014 09:25
 RE: Ausgabe bei Ausführung neuling96 08.01.2015 06:07
 RE: Ausgabe bei Ausführung neuling96 28.12.2014 09:49
 RE: Ausgabe bei Ausführung eulerscheZahl 28.12.2014 10:05
 RE: Ausgabe bei Ausführung neuling96 28.12.2014 10:51
 RE: Ausgabe bei Ausführung neuling96 28.12.2014 11:01
 RE: Ausgabe bei Ausführung eulerscheZahl 28.12.2014 11:32
 RE: Ausgabe bei Ausführung neuling96 28.12.2014 11:45
 RE: Ausgabe bei Ausführung eulerscheZahl 28.12.2014 11:57
 RE: Ausgabe bei Ausführung neuling96 28.12.2014 12:18
 RE: Ausgabe bei Ausführung eulerscheZahl 28.12.2014 12:50
Nächste Seite »

Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
Ausgabe bei Ausführung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

System.out.println(o1.m() + o2.m()); ->(1+2)=(3)
System.out.println(o2.m() + o3.m()); ->(2+2)=(4)

System.out.println(o2.n()); ->2

System.out.println(print(o1)); ->Parameter A: Ich bin ein A.
System.out.println(print(o2));->Parameter B: Ich bin ein B.
System.out.println(print(o3));->Parameter B: Ich bin ein B.

System.out.println(o1.add(o1));2+2= 4
System.out.println(o1.add(o2));geht nicht?
System.out.println(o2.add(o3)); 4+4=8
System.out.println(o2.add(o2));3+3=6

neuling96 hat diese Bilder (verkleinerte Versionen) angehängt:
Unbenannt1.jpg Unbenannt.jpg

28.12.2014 01:07
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sei so lieb und gib den Code in Textform und nicht als Bild an, dann kann ich es auch ausführen ohne abtippen zu müssen.

__________________
Syntax Highlighting fürs Board (Link)
28.12.2014 08:00 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
public class A {
private int a;
public A(int a){
this.a = a;
}
public int getA(){
return this.a;
}
public int add(A a){
return this.a + a.getA();
}
public int m(){
return 1;
}
public int n(){
return this.m();
}
public String toString(){
return "Ich bin ein A.";
}
}

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
public class B extends A {
private int a;
public B(int a){
super(a);
}
public int getA(){
return this.a;
}
public int add(B b){
return this.getA() + b.getA();
}
public int m(){
return 2;
}
public String toString(){
return "Ich bin ein B.";
}
}

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
public class C {

public static String print(A a){
 return "Parameter A: " + a.toString();
 }

public static String print(B b){
 return "Parameter B: " + b.toString();
 }
 public static void main(String[] args) {

 A o1 = new A(2);
 B o2 = new B(3);
 A o3 = new B(4);

 System.out.println(o1.m() + o2.m());
 System.out.println(o2.m() + o3.m());

 System.out.println(o2.n());

 System.out.println(print(o1));
 System.out.println(print(o2));
 System.out.println(print(o3));

 System.out.println(o1.add(o1));
 System.out.println(o1.add(o2));
 System.out.println(o2.add(o3));
 System.out.println(o2.add(o2));
 }
 }
 }
28.12.2014 08:04
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
public class A {
private int a;
public A(int a){
this.a = a;
}
public int getA(){
return this.a;
}
public int add(A a){
return this.a + a.getA();
}
public int m(){
return 1;
}
public int n(){
return this.m();
}
public String toString(){
return "Ich bin ein A.";
}
}

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
public class B extends A {
private int a;
public B(int a){
super(a);
}
public int getA(){
return this.a;
}
public int add(B b){
return this.getA() + b.getA();
}
public int m(){
return 2;
}
public int n() {
return this.m();
}
public String toString(){
return "Ich bin ein B.";
}
}

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
public class C {

public static String print(A a){
 return "Parameter A: " + a.toString();
 }

public static String print(B b){
 return "Parameter B: " + b.toString();
 }
 public static void main(String[] args) {

 A o1 = new A(2);
 B o2 = new B(3);
 A o3 = new B(4);



 System.out.println(o3.n());


 }
 }
 }


bestimme den wert von o3.n()
o3.n() ist =2 (überschreiben effekt)

jetzt soll die Methode int n() von A ausgeklammert werden
was liefert nun o3.n()

die main kennt o3 als A, allerdings wird erst zur lauzeit entscheiden, welche methode ausgeführt, aber in A gibt es int n () nicht mehr

ich denke
der Compiler überprüft vor der laufzeit ob überhaupt die Methode enthalten ist?? (ist geraten)
und damit geht es nicht, weil int n() nicht in A gibt??
24.01.2015 01:37
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Viel besser.
Die erste Unstimmigkeit haben wir hier:
code:
1:
System.out.println(o1.add(o2)); //2

Es gibt die Variablen A.a und B.a.
code:
1:
2:
3:
4:
public B(int a){
    super(a);
    System.out.println("B.a = " + this.a); //Testausgabe liefert: B.a = 0
}

ruft aber den Konstruktor der Elternklasse auf und setzt somit das A.a, währed B.a auf dem Anfangswert 0 bleibt. Bei B.getA() wird daher eine 0 zurückgegeben.
o1.add(o2) macht also 2+0 = 2

code:
1:
System.out.println(o2.add(o3)); //3

Ist ein B.add(A). Da B diese Funktion nicht anbietet (hat nur B.add(B)), wird A.add(A) aufgerufen. this.getA() ist daher 3, b.getA() liefert eine 0 (Begründung siehe oben)

code:
1:
System.out.println(o2.add(o2)); //0

greift zweimal auf B zu, also 0 + 0 = 0.

__________________
Syntax Highlighting fürs Board (Link)
28.12.2014 09:25 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

[quote]Original von eulerscheZahl
Viel besser.
Die erste Unstimmigkeit haben wir hier:
code:
1:
System.out.println(o1.add(o2)); //2

Es gibt die Variablen A.a und B.a.
code:
1:
2:
3:
4:
public B(int a){
    super(a);
    System.out.println("B.a = " + this.a); //Testausgabe liefert: B.a = 0
}

ruft aber den Konstruktor der Elternklasse auf und setzt somit das A.a, währed B.a auf dem Anfangswert 0 bleibt. Bei B.getA() wird daher eine 0 zurückgegeben.
o1.add(o2) macht also 2+0 = 2
[quote]


"Bei Attributen tritt dabei der Effekt der
Versteckens
auf: Das Attribut der
Vaterklasse ist in der abgeleiteten Klasse nicht mehr sichtbar"

genau das haben wir hier vorliegen, auf das Attribute this.a ist nicht mehr sichtbar in der Vaterklasse.


muss in der abgeleiteten klasse

Es ist nicht erlaubt, den Default-Konstruktor aufzurufen, obwohl
ein expliziter Konstruktor in der Vaterklasse vorhanden ist und der
Default-Konstruktor nicht existiert

was wenn in der vaterklasse

public class A {
private int a;
public A(){ // ohne in klammern int a
this.a = a;
}

und muss eine abgeleitet klasse stets mit super beginnen also ich mein

public class B extends A {
private int a;
public B(int a){
super(a);// ohne super obwohl in der vaterklasse ein -Konstruktor vorhanden ist
}
08.01.2015 06:07
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich sehe gerade, dass in der überschritt des übungsblattes steht : Interface

kann man das verstehen ohne Interface behandelt zuhaben?
28.12.2014 09:49
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es geht hier um Vererbung und Polymorphie, um das zu verstehen, musst du keine Interfaces kennen.

__________________
Syntax Highlighting fürs Board (Link)
28.12.2014 10:05 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich tun mich das alles nach zuvollziehen
(o1.add(o2));

wieso wird hier
ruft aber den Konstruktor der Elternklasse auf und setzt somit das A.a, aber wieso?

ich verstehe auch nicht wieso es die Variablen A.a und B.a. gibt?
28.12.2014 10:51
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

A o3 = new B(4);

was genau macht das?
28.12.2014 11:01
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public class A {
    private int a;
    //...
}

public class B extends A {
    private int a;
    //...
}

die Klassen haben beide eine Variable namens a, aber es sind trotzdem 2 verschiedene Variablen. Dabei verdeckt B.a A.a. Deshalb liefert B.getA() immer 0.

code:
1:
A o3 = new B(4);

legt ein B Objekt an und speichert einen Verweis auf ein A Objekt ab.

__________________
Syntax Highlighting fürs Board (Link)
28.12.2014 11:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

legt ein B Objekt an und speichert einen Verweis auf ein A Objekt ab

d.h wenn ich eine Methode mit A o3 = new B(4);
03.beliebigeMethode aufrufe dann wird die beliebigeMethode von B aufgerufen, da es sich um ein Objekt aus B handelt?


wird hingegen

haben wir public int(A a) und public int(B b), dann wird public int(A a) ausgeführt?
28.12.2014 11:45
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
haben wir public int add(A a) und public int add(B b), dann wird public int add(A a) ausgeführt?

Bei o2.add(o3) wird o2.add(B b) aufgerufen, da o3 ein B ist. o3 verhält sich wie ein B.
Einen Unterschied gibt es aber: die main kennt o3 als A und erlaubt daher nur, dessen Funktionen aufzurufen.

code:
1:
System.out.println(o3.add(o2)); //4

ruft die Funktion add der Klasse A auf, da o3 in der main als A und nicht als B bekannt ist.
Mein Rat: hole dir NetBeans/eclipse und gehe das Programm mit Hilfe des Debuggers Zeile für Zeile durch, dann siehst du, wann welche Funktion aufgerufen wird.

__________________
Syntax Highlighting fürs Board (Link)
28.12.2014 11:57 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von eulerscheZahl
System.out.println(o2.add(o3)); //3
Ist ein B.add(A). Da B diese Funktion nicht anbietet (hat nur B.add(B)), wird A.add(A) aufgerufen. this.getA() ist daher 3, b.getA() liefert eine 0

.


Zitat:
Original von eulerscheZahl
Zitat:
haben wir public int add(A a) und public int add(B b), dann wird public int add(A a) ausgeführt?

Bei o2.add(o3) wird o2.add(B b) aufgerufen, da o3 ein B ist. o3 verhält sich wie ein B.
Einen Unterschied gibt es aber: die main kennt o3 als A und erlaubt daher nur, dessen Funktionen aufzurufen.

.



wieso ist einmal B.add(A). und dann B.add(B)

und was genau ist die main im Programm?
28.12.2014 12:18
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

das ist die main:
code:
1:
public static void main(String[] args) {


Ich tue mir gerade schwer, wie ich das erklären soll, hilft dir das weiter? Javainsel

__________________
Syntax Highlighting fürs Board (Link)
28.12.2014 12:50 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Ausgabe bei Ausführung