Polymorphie:Überschreiben der Methode klappt nicht

Status
Nicht offen für weitere Antworten.

Tai

Mitglied
Hallo ihr Lieben,ich habe folgendes Problem:
ich möchte in einer Klasse 2 Methoden überschreiben und den Rest so übernehmen.
Aber wenn ich das Programm ausführe benutzt das Programm immer noch die alte Methode
Hier meine Codes
1.
Java:
import java.util.Scanner;


public class eingabe2 extends Taschenrechner1 {
	
	double    i;
	double    j;
	double    a;
	
	
	public void static benutzerEingabe() {
		Scanner sc = new Scanner(System.in);
		System.out.println ("Bitte geben sie eine Zahl ein: "  );
		double    i= sc.nextInt();
		System.out.println ("Bitte geben sie eine Zahl ein: " );
		double   j = sc.nextInt();
		System.out.println ("Bitte geben sie einen Rechneoperator ein:" );
		System.out.println ("1 = Addieren; 2 = Subtraktion; 3 = Multiplikation; 4 = Division; 5 = Prozent; 6 = Potenz: " );
		double a = sc.nextInt();
		    if ( a==1){
				addition( i,  j);
			}
			else if (a==2){
			     subtraction(i,  j);
			}
			else if (a==3){
				multiplikation(i,  j);
				
			}
			else if (a==4 ){
				division(i,  j);
			}
				
				else if (a == 5){
					prozent(i,  j);
				}
				else if (a== 6){
					potenz(i,  j);
				}
				else if (a > 6){
					System.out.println("Ihre Eingabe ist ungültig");
				}
	}	
				
		    public static void main(String[] args) {
		    	benutzerEingabe();
		    }
		    	
				
				
		   
		    

}
hier sagt mir die Fehlermeldung, dass die Rechenarten static sein sollen,
in der Klasse Taschenrecher 1
2.
Java:
public class Taschenrechner1 {
	public  void addition (double i, double j) {
		  System.out.println ("Das Ergebniss lautet " +i+ "+" +j+ "="+(i+j));
	   };
	   public  void subtraction(double i, double j) {
			  System.out.println ("Das Ergebniss lautet " +i+ "-" +j+ "="+(i-j));
		   };
		   public void division (double i, double j) {
				  System.out.println ("Das Ergebniss lautet " +i+ "/" +j+ "="+(i/j));
			   };
			 public   void multiplikation (double i, double j) {
					  System.out.println ("Das Ergebniss lautet " +i+ "*" +j+ "="+(i*j));
				   };
				public  void prozent (double i, double j) {
						  System.out.println ("Das Ergebniss lautet " +i+ "%" +j+ "="+(i/100*j));
					   };
	                public void potenz(double i, double j){
		                    System.out.println("Das Ergebniss lautet:" +i+ " hoch " +j+"=" +Math.pow(i,j));
	                };

	        	  
	          
	       public static void main(String[] args) {
			
			
		
		}
	}
wenn ich die methoden aber in dieser Klasse static mache kann ich sie ja nicht mehr überschreiben wenn ich sie im taschenrechner 2 benutzen möchte!!??
3.
Java:
public class taschenrechner2 extends eingabe2 {
    @Override
	public void addition(i,j){
		if((i-j)>=0){
			System.out.println("Das Ergebniss lautet:" +i+ "+"+j+ "=" +(i-j));
		}
		else if((i-j)<=0){
			System.out.println("Das Ergebniss lautet:" +i+ "-"+j+ "=" +(-(i-j)));
			
		}
		@Override
		 public void subtraction(double i, double j); {
		  System.out.println ("Das Ergebniss lautet " +c+ "-" +d+ "="+(i+j));
		  };
	
}
und in dieser klasse überschreibt er die Methode addition nicht und sagt mir bei der subtraction das void unzulässig ist.
Ich weiss nicht wo mein Fehler liegt!
Bind dankbar für jede Hilfe???:L
 
Zuletzt bearbeitet:
zu 1.
"benutzerEingabe" ist static. Mach das static weg und erstell in der main-Methode eine neue Instanz von "Eingabe2" und ruf auf diese "benutzerEingabe" auf.

zu 2.
public void addition(i,j){
Syntaxfehler, du musst auch hier vor den Parametern "i" und "j" jeweils ihren Typ dazuschreiben. (in deinem Fall jeweils double)

public void subtraction(double i, double j); {
Syntaxfehler, mach das ; weg


3. Klassennamen schreibt man im CamelCase (d.h. erster Buchstabe groß)
4. Normalerweise schreibt man bei Methoden kein ; hinter das letzte }
 
Zuletzt bearbeitet:
Damit du die Methode nicht als static deklarieren musst, muss sie ein Objekt gebunden sein. Heisst du musst ein Objekt der Klasse Taschenrechner1 erzeugen.

[Java]
public static void main(String[] args) {

Taschenrechner1 tr1 = new Taschenrechner1();
tr1.benutzerEingabe();
}

[/Java]

Edit: Ich war wohl mal wieder etwas zu langsam ^^
 
Zuletzt bearbeitet:
Super !!!
Danke euch beiden!
Klappt wunderbar
(oh man mit den Klammern hab ich wohl den Wald vor lauter Bäumen nicht gesehen!!)
Vielen Vielen Dank
:toll::toll::toll:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben