init-methoden vererbung

  • Themenstarter Themenstarter reyz
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

reyz

Gast
hallo,

ich sitze grad seit 2h an der vererbung von 2 init methoden und komm kein stück weiter.

lage:ich habe eine oberklasse mit 2 init methoden,die eine soll daten vom benutzerabfrage,die andere stellt quasi nur den rohbau für die unterklasse die von der klasse mit der mainmethode angesprochen wird und die "testdaten" übergeben bekommt .meine oberklasse sieht so aus:


public class Wertpapier{

public int wkn;
private String emittent;
private int rating;
private int emissionsjahr;
public boolean istUnethisch;
public double kurswert;


//Benutzerabfrage
public void init(int wpnummer){
wkn = wpnummer;
//System.out.println("Bitte Wertpapierkennnummer eingeben! ");
//wkn = Tools.intEingabe();
System.out.println("Bitte Emittenten eingeben! ");
emittent = Tools.stringEingabe();
System.out.println("Bitte das Rating eingeben!");
rating = Tools.intEingabe();
System.out.println("Bitte Emissionsjahr eingeben!");
emissionsjahr = Tools.intEingabe();
System.out.println("Bitte eingeben, ob Wertpapier unethisch!");
istUnethisch = Tools.booleanEingabe();
System.out.println("Bitte Kurswert eingeben!");
kurswert = Tools.doubleEingabe();

}



//Wertübergabe
public void init(int xwkn, String xemittent, int xrating, int xemissionsjahr, boolean xistUnethisch, double xkurswert){
wkn=xwkn;
emittent=xemittent;
rating=xrating;
emissionsjahr=xemissionsjahr;
istUnethisch=xistUnethisch;
kurswert=xkurswert;

}



public void ausgeben(){

System.out.println("Wertpapierkennnummer: "+wkn+", Emittent: "+emittent+", Rating: "+rating+", Emissionsjahr: "+emissionsjahr+", ist unethisch: "+istUnethisch+", Kurswert: "+kurswert+" ");

}

}



nun habe ich eine unterklasse ,die beide init methoden übernehmen und ergänzen soll.zu meiner überraschung kriege ich nicht mal die methode mit der benutzerabfrage zum laufen,von der ,welche daten aus der mainmethodenklasse übergeben bekommt mal ganz zu schweigen.hier meine unterklasse:


public class Aktie extends Wertpapier {

private double nennwert;
private boolean istVorzugsaktie;
private double putPreis;
public double divErwartungswert;



//abfrage
public void init(int akNummer){

wkn=akNummer;
super.init(int wpnummer);
System.out.println("Bitte den Nennwert eingeben!");
nennwert = Tools.doubleEingabe();
System.out.println("Bitte eingeben ob Vorzugsaktie!");
istVorzugsaktie = Tools.booleanEingabe();
System.out.println("Bitte Putpreis eingeben!");
putPreis = Tools.doubleEingabe();
System.out.println("Bitte den Dividendenerwartungswert eingeben!");
divErwartungswert = Tools.doubleEingabe();
}



//Werteübergabe aus Fondmanager-test
public void init(int xwkn, String xemittent, int xrating, int xemissionsjahr, boolean xistUnethisch, double xkurswert,double a,boolean b, double c, double d){
super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
nennwert = a;
istVorzugsaktie = b;
putPreis = c;
divErwartungswert = d;
}

public void ausgeben(){
super.ausgeben();
System.out.println("Nennwert: "+nennwert+", Vorzugsaktie: "+istVorzugsaktie+", Putpreis: "+putPreis+", Dividendenerwartungswert: "+divErwartungswert+" ");


}


das sind die fehlermeldungen,die ich beim kompilieren bekomme:
Aktie.java:14: '.class' expected
super.init(int wpnummer);
^
Aktie.java:14: ')' expected
super.init(int wpnummer);
^
Aktie.java:29: '.class' expected
super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
^
Aktie.java:29: ')' expected
super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
^
Aktie.java:14: unexpected type
required: value
found : class
super.init(int wpnummer);
^
Aktie.java:29: unexpected type
required: value
found : class
super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
^
6 errors


falls es hilft:ich schreibe mit kate in ner kde umgebung unf nem unix rechner.

ich habe schon so ziemlich alles an variationen versucht.jede init methode einzeln,die () leer gelassen,die init methoden uber eine menu methode aufgerufen usw.

das sind die terstdaten,die übergeben werden sollen:

private void testAktienLaden(){
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"VW AG",1,1967,true,20.0,23.0,false,19.3, 2.1);
this.akZeiger++;
this.akNummer++;
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"Beate Kruse",2,1999,true,6.0,5.0,false,15.4, 0.2);
this.akZeiger++;
this.akNummer++;
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"Thomas Kuck",2,1995,false,43.45,35.0,false,65.7, 9.2);
this.akZeiger++;
this.akNummer++;
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"DeimlerKreisler",1,1929,false,19.45,45.0,false,20.34, 2.9);
this.akZeiger++;
this.akNummer++;
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"H.Kraus und P.Maffay",3,1965,true,700.34,45.0,true,1000.0, 154.87);
this.akZeiger++;
this.akNummer++;
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"Kwelle",3,1975,false,34.74,5.0,true,38.0, 4.87);
this.akZeiger++;
this.akNummer++;
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"MayerSchaering",3,2006,false,25.74,30.0,true,32.0, 15.96);
this.akZeiger++;
this.akNummer++;
this.aktien[akZeiger] = new Aktie();
this.aktien[akZeiger].init(akNummer,"Frestlee",3,1935,true,78.35,10.0,true,90.0, 12.48);
this.akZeiger++;
this.akNummer++;
}


bin für JEDE anregung dankbar und probiers dann gleich aus.
btw:meine tutorin meinte das meine übernahme init methode so aussehen müsste:
public void init (alle Variablen){
super.init(Variablen der Klasse Wertpapier);
Variablen der Klasse Aktie


finde das es bei mir genauso ausschaut.
 
ich vergas:an den variablen deklarationen darf ich nix ändern,private muss private bleiben.
 
hallo,

ich sitze grad seit 2h an der vererbung von 2 init methoden und komm kein stück weiter.

lage:ich habe eine oberklasse mit 2 init methoden,die eine soll daten vom benutzerabfrage,die andere stellt quasi nur den rohbau für die unterklasse die von der klasse mit der mainmethode angesprochen wird und die "testdaten" übergeben bekommt .meine oberklasse sieht so aus:


Code:
public class Wertpapier{

	public int wkn;
	private String emittent;
	private int rating;
	private int emissionsjahr;
	public boolean istUnethisch;
	public double kurswert;


	//Benutzerabfrage
	public void init(int wpnummer){
		wkn = wpnummer;
		//System.out.println("Bitte Wertpapierkennnummer eingeben! ");
		//wkn = Tools.intEingabe();
		System.out.println("Bitte Emittenten eingeben! ");
		emittent = Tools.stringEingabe();
		System.out.println("Bitte das Rating eingeben!");
		rating = Tools.intEingabe();
		System.out.println("Bitte Emissionsjahr eingeben!");
		emissionsjahr = Tools.intEingabe();
		System.out.println("Bitte eingeben, ob Wertpapier unethisch!");
		istUnethisch = Tools.booleanEingabe();
		System.out.println("Bitte Kurswert eingeben!");
		kurswert = Tools.doubleEingabe();

	}



	//Wertübergabe
	public void init(int xwkn, String xemittent, int xrating, int xemissionsjahr, boolean xistUnethisch, double xkurswert){
		wkn=xwkn;
		emittent=xemittent;
		rating=xrating;
		emissionsjahr=xemissionsjahr;
		istUnethisch=xistUnethisch;
		kurswert=xkurswert;

	}



	public void ausgeben(){

		System.out.println("Wertpapierkennnummer: "+wkn+", Emittent: "+emittent+", Rating: "+rating+", Emissionsjahr: "+emissionsjahr+", ist unethisch: "+istUnethisch+", Kurswert: "+kurswert+"  ");

	}

}


nun habe ich eine unterklasse ,die beide init methoden übernehmen und ergänzen soll.zu meiner überraschung kriege ich nicht mal die methode mit der benutzerabfrage zum laufen,von der ,welche daten aus der mainmethodenklasse übergeben bekommt mal ganz zu schweigen.hier meine unterklasse:

Code:
public class Aktie extends Wertpapier {

	private double nennwert;
	private boolean istVorzugsaktie;
	private double putPreis;
	public double divErwartungswert;



	//abfrage
	public void init(int akNummer){

		wkn=akNummer;
		super.init(int wpnummer);
		System.out.println("Bitte den Nennwert eingeben!");
		nennwert = Tools.doubleEingabe();
		System.out.println("Bitte eingeben ob Vorzugsaktie!");
		istVorzugsaktie = Tools.booleanEingabe();
		System.out.println("Bitte Putpreis eingeben!");
		putPreis = Tools.doubleEingabe();
		System.out.println("Bitte den Dividendenerwartungswert eingeben!");
		divErwartungswert = Tools.doubleEingabe();
	}



	//Werteübergabe aus Fondmanager-test
	public void init(int xwkn, String xemittent, int xrating, int xemissionsjahr, boolean xistUnethisch, double xkurswert,double a,boolean b, double c, double d){
		super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
		nennwert = a;
		istVorzugsaktie = b;
		putPreis = c;
		divErwartungswert = d;
 	}

	public void ausgeben(){
		super.ausgeben();
		System.out.println("Nennwert: "+nennwert+", Vorzugsaktie: "+istVorzugsaktie+", Putpreis: "+putPreis+", Dividendenerwartungswert: "+divErwartungswert+" ");


	}

das sind die fehlermeldungen,die ich beim kompilieren bekomme:
Aktie.java:14: '.class' expected
super.init(int wpnummer);
^
Aktie.java:14: ')' expected
super.init(int wpnummer);
^
Aktie.java:29: '.class' expected
super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
^
Aktie.java:29: ')' expected
super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
^
Aktie.java:14: unexpected type
required: value
found : class
super.init(int wpnummer);
^
Aktie.java:29: unexpected type
required: value
found : class
super.init(int wkn, String emittent, int rating, int emissionsjahr, boolean istunEthisch, double kurswert);
^
6 errors


falls es hilft:ich schreibe mit kate in ner kde umgebung unf nem unix rechner.

ich habe schon so ziemlich alles an variationen versucht.jede init methode einzeln,die () leer gelassen,die init methoden uber eine menu methode aufgerufen usw.

das sind die terstdaten,die übergeben werden sollen:
Code:
private void testAktienLaden(){
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"VW AG",1,1967,true,20.0,23.0,false,19.3, 2.1);
		this.akZeiger++;
		this.akNummer++;
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"Beate Kruse",2,1999,true,6.0,5.0,false,15.4, 0.2);
		this.akZeiger++;
		this.akNummer++;
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"Thomas Kuck",2,1995,false,43.45,35.0,false,65.7, 9.2);
		this.akZeiger++;
		this.akNummer++;
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"DeimlerKreisler",1,1929,false,19.45,45.0,false,20.34, 2.9);
		this.akZeiger++;
		this.akNummer++;
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"H.Kraus und P.Maffay",3,1965,true,700.34,45.0,true,1000.0, 154.87);
		this.akZeiger++;
		this.akNummer++;
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"Kwelle",3,1975,false,34.74,5.0,true,38.0, 4.87);
		this.akZeiger++;
		this.akNummer++;
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"MayerSchaering",3,2006,false,25.74,30.0,true,32.0, 15.96);
		this.akZeiger++;
		this.akNummer++;
		this.aktien[akZeiger] = new Aktie();
		this.aktien[akZeiger].init(akNummer,"Frestlee",3,1935,true,78.35,10.0,true,90.0, 12.48);
		this.akZeiger++;
		this.akNummer++;
	}

bin für JEDE anregung dankbar und probiers dann gleich aus.
btw:meine tutorin meinte das meine übernahme init methode so aussehen müsste:
public void init (alle Variablen){
super.init(Variablen der Klasse Wertpapier);
Variablen der Klasse Aktie


finde das es bei mir genauso ausschaut.
 
wie kann man nur so unfähig programmieren?! 😉
wie kann man zig bis hunderte Zeilen basteln/ programmieren ohne das die einfachsten Sachen funktionieren?

wie wärs denn mal mit einer Ober-/ Unterklasse mit EINEM Parameter statt der hunderttausend die du da versuchst?
sieht dann so aus:

Code:
public class Test1 {
   public void init(int a) {
     System.out.println("a in Test1: "+a);
  }
}
public class Test2 {
   public void init(int a, int b) {
     super(int a);
     System.out.println("b in Test2: "+b);
  }

  public static void main(String[] args) {
    Test2 t = new Test2();
     t.init(3,42);
  }
}
ein im Gegensatz zu deinem Code komplett vollständiges Beispiel,
mit genau dem gleichen Problem..

Lösung übrigens:
Syntaxfehler: super(a); statt super(int a);

beim Aufruf von super() wie bei jeder weiteren Verwendung der Parameter hat der Typ 'int' nichts mehr zu suchen,
wozu diesen wiederholen?
-------

bei
Code:
 public void init(int akNummer){
      wkn=akNummer;
      super.init(int wpnummer); 
..
}
ist noch die Frage, was du an die Oberklasse übergeben möchtest,
die Nennung des Parameternames der Oberklasse bringt gar nix,

du musst die Variable benennen, die übergeben werden soll,
für akNummer z.B.
Code:
 public void init(int akNummer){
      wkn=akNummer;
      super.init(akNummer); 
..
}
------------

siehe meine etwas drastische Antwort als Schubser in die richtige Richtung, nicht als Unfreundlichkeit 😉
wenn du dich mit solchen Problemen länger aufhälst..

die Grundlagen beherschen, in 10 Zeilen-Programmen!,
erst danach solche unnützen Monsterklassen schreiben
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben