Schiff verebung

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 Schiff verebung

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:
public class Schifffahrt
{
  public static void main(String[] args)
  {
    final int S1_TONNAGE = 1000;
    final int S2_TONNAGE = 2000;
    final int S2_SEGELFLAECHE = 200;
   
    
    Schiff s1 = new Schiff(S1_TONNAGE);
    Segelschiff s2 = new Segelschiff(S2_TONNAGE,S2_SEGELFLAECHE);
    
    
    System.out.println("s1: " + s1.toString());
    // s1: Schiff[tonnage=1000]
    
    System.out.println("s2: " + s2.toString());
    // s2: Segelschiff[segelflaeche=200, Schiff[tonnage=2000]]
    
  
  }

}





code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class Schiff{
private  int Tonnage;

public Schiff(int Tonnage){
this.Tonnage=Tonnage;
}



public String toString(){
return "Schiff"+"["+"tonnage" + "="+ this.Tonnage +"]";
}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public class Segelschiff extends Schiff{
private int Segelflaeche;

public Segelschiff{int Tonnage; int Segelflaeche){
super(Tonnage);
this.Segelflaeche=Segelflaeche;
 }

public String toString(){
return "["+"segelflaeche" + "=" +this.Segelflaeche +","+"Schiff"+"["+"tonnage" + "="+ super(Tonnage) +"]"+"]"; 
}
}


ich hab leider keine ahnung wie den fehler beseitigen kann
 
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
public Segelschiff{int Tonnage, int Segelflaeche){

da hattest du irrtümlich ein Semikolon.

code:
1:
2:
3:
public String toString(){
return "["+"segelflaeche" + "=" +this.Segelflaeche +","+"Schiff"+"["+"tonnage" + "="+ super(Tonnage) +"]"+"]"; 
}

das geht nicht, da Tonnage private ist und zum Schiff gehört, nicht zum Segelschiff.

code:
1:
2:
3:
public String toString() {
    return "Segelschiff[segelflaeche=" +this.Segelflaeche +","+super.toString()+"]"; 
}
Auf diesen Beitrag antworten »
neuling96

vielen dank

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:
33:
34:
35:
36:
37:
38:
39:
public class Schifffahrt
{
  public static void main(String[] args)
  {
    final int S1_TONNAGE = 1000;
    final int S2_TONNAGE = 2000;
    final int S2_SEGELFLAECHE = 200;
    final int S3_TONNAGE = 3000;
    final int S3_MOTORLEISTUNG = 30;
    
    Schiff s1 = new Schiff(S1_TONNAGE);
    Segelschiff s2 = new Segelschiff(S2_TONNAGE,S2_SEGELFLAECHE);
    Motorschiff s3 = new Motorschiff(S3_TONNAGE,S3_MOTORLEISTUNG);
    
    System.out.println("s1: " + s1.toString());
    // s1: Schiff[tonnage=1000]
    
    System.out.println("s2: " + s2.toString());
    // s2: Segelschiff[segelflaeche=200, Schiff[tonnage=2000]]
    
    System.out.println("s3: " + s3.toString());
    // s3: Motorschiff[motorleistung=30, Schiff[tonnage=3000]]
    
    Schiff c;
    if(args.length == 0){
      c = s2;
    }
    else{
      c = s3;
    }
    System.out.println("c:  " + c.toString());
  }

}





code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
public class Motorschiff extends Schiff{
private int Motorleistung;

public Motorschiff(int Tonnage, int Motorleistung){
super(Tonnage);
this.Motorleistung=Motorleistung;
}
public String toString(){
return "Motorschiff[Motorleistung=" +this.Motorleistung +","+super.toString()+"]"; 
}


}


bei den nächsten teilaufgaben bin ich überfragt
Auf diesen Beitrag antworten »
eulerscheZahl

Woher kann denn das toString() kommen, wenn das Schiff ausscheidet? Hat das Schiff vielleicht eine Basisklasse?
 
Auf diesen Beitrag antworten »
neuling96

Zitat:
Original von eulerscheZahl
Woher kann denn das toString() kommen, wenn das Schiff ausscheidet? Hat das Schiff vielleicht eine Basisklasse?


Ehrlich gesagt keine Ahnung.
Ich habs doch nur in Schiff class tostring() def. und alle andere class greifen auf tostring von Schiff zurück
Auf diesen Beitrag antworten »
eulerscheZahl

Wenn du einer Klasse nicht sagst, dass sie von einer anderen erbt, dann erbt sie automatisch von Object. Und das hat eben ein toString().
Auf diesen Beitrag antworten »
neuling96

Zitat:
Original von eulerscheZahl
Wenn du einer Klasse nicht sagst, dass sie von einer anderen erbt, dann erbt sie automatisch von Object. Und das hat eben ein toString().


das vergesse ich immer wieder.. alle erben von Object


Schiff c;
if(args.length == 0){
c = s2;
}
else{
c = s3;
}
System.out.println("c: " + c.toString());

wenn ich java Schifffahrt.java xyz ausführe dann
c=s3 zweig ausgeführt

args ist doch ein Stringarray und folgt mit args=xyz -> args.length ungleich 0
alles soweit doch richtig???

aber was hat das mit complierzeit zutun?
Auf diesen Beitrag antworten »
eulerscheZahl

Ja, dann landest du im else-Teil.
Und mit Compilierzeit hat das nichts zu tun - der Compiler hat schließlich keine Ahnung, mit welchen Kommandozeilenargumenten du das aufrufen willst.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »