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

Informatiker Board » Themengebiete » Praktische Informatik » abstrakte klasse » 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 abstrakte klasse
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
abstrakte klasse Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Gegeben sei die folgende abstrakte Klasse:
code:
1:
2:
3:
4:
5:
6:
7:
8:
public abstract classSum{
public intplus(inta,intb)
{returna + b;}
public abstract booleanequals(Sum s);}
Die Klasse wird folgendermaßen verwendet:
public static voidmain(String[] args)
{Sum s =newSum();
s.plus(2,3);}

Die Verwendung der Klasse ist so nicht möglich . Wo liegt der Fehler? Wie kann man ihn beheben?

liegt der fehler hier {Sum s =newSum();
08.12.2014 17:28
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 Problem ist (neben ein paar fehlenden Leerzeichen), dass die Klasse abstrakt ist.
Mit einer abstrakten Klasse kann man so nichts anfangen.

Entweder du wirfst das abstract wieder raus, oder du erbst von besagter Klasse, implementierst du abstrakte Funktion und verwendest dann die geerbte Klasse.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2014 17:40 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

Entweder du wirfst das abstract wieder raus,
code:
1:
2:
3:
4:
5:
6:
7:
8:
public classSum{
public intplus(inta,intb)
{returna + b;}
public  booleanequals(Sum s);}
Die Klasse wird folgendermaßen verwendet:
public static voidmain(String[] args)
{Sum s =newSum();
s.plus(2,3);}


so?

und was genau macht der Ausdruck {Sum s =newSum();?
08.12.2014 17:48
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

Wenn du nur einen Funktionskopf und keine Implementierung hast (Funktion equals), dann ist sie abstract. Folglich muss die Funktion auch raus (oder implementiert werden)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public class Sum {
	public int plus(int a,int b) {
		return a + b;
	}

	//public boolean equals(Sum s);

	public static void main(String[] args) {
		Sum s = new Sum();
		s.plus(2,3);
	}
}


mit Sum s = new Sum(); erzeugst du eine Instanz der Klasse. Mit dieser Instanz kannst du dann die Funktionen aufrufen.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2014 17:59 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 möchte die Funktion implementieren.


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
public class Sum {
	public int plus(int a,int b) {
		return a + b;
	}

	public boolean equals(Sum s);

public equals(Sum s);{
 return plus;
}
	public static void main(String[] args) {
		
Sum s = new Sum();
		s.plus(2,3);
	}
}


Ist das korrekt?
08.12.2014 18:10
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

Nein!

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class Sum {
	public int plus(int a,int b) {
		return a + b;
	}

	public boolean equals(Sum s) {
		//komplizierte Berechnungen
		return result;
	}

	public static void main(String[] args) {
		Sum s = new Sum();
		s.plus(2,3);
	}
}

Warum der Funktionskopf, bevor du die Funktion dann doch implementierst?
Warum das Semikolon direkt vor Beginn der Implementierung?

__________________
Syntax Highlighting fürs Board (Link)
08.12.2014 18:16 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

vielen dank!!


was genau bedeutet?

s.plus(2,3)

meine vermutung:
dabei steht das s für die class sum
und plus für die Funktion/Methode public int plus
08.12.2014 18:28
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

Ja, das hast du richtig erkannt.

Eine Alternative wäre noch:
code:
1:
2:
3:
4:
5:
public static int plus(int a, int b) {
	return  a+ b;
}

Sum.plus(2, 3);


Wenn die Methode static ist, wird sie direkt über die Klasse aufgerufen, sonst über eine Instanz der Klasse.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2014 18: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

vielen lieben dank!! smile
08.12.2014 18:37
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

"Entweder du wirfst das abstract wieder raus, oder du erbst von besagter Klasse, implementierst du abstrakte Funktion und verwendest dann die geerbte Klasse. "

ich hab versucht, das zu implementieren

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class y extends Sum{

public abstact boolean (Sum s){
return true; // immer wahr
}
public static voidmain(String[] args){
Sum s =new y();
s.plus(2,3);
}

}


18.01.2015 20:25
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

Wenn du eine abstrakte Klasse implementieren willst, darfst du nicht abstract in den Methodenkopf schreiben, genau das soll es ja nicht mehr sein.

__________________
Syntax Highlighting fürs Board (Link)
19.01.2015 07:04 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

stimmt Zunge raus

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public class y extends Sum{

public  boolean (Sum s){
return true; // immer wahr
}
public static voidmain(String[] args){
Sum s =new y();
s.plus(2,3);
}

}

19.01.2015 11:39
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

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

Sag mal, wie gehst Du eigentlich vor? Kann es sein, dass Du nur mit einem Buch arbeitetest und die Quelltexte (falsch) abtippst? Keines der Programme, die Du hier gepostet hast kompiliert ohne weiteres, weil Leerzeichen, Namen oder sonstiges fehlen...

Gruß,

Karlito
19.01.2015 11:54 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito 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

sry das liegt an mir unglücklich

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public class y extends Sum{

public  boolean equals(Sum s){
return true; // immer wahr
}
public static void main(String[] args){
Sum s =new y();
s.plus(2,3);
}

}

19.01.2015 13:10
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

Aus deinen Screenshots schließe ich, dass du mit Texteditor und Eingabeaufforderung arbeitest.
Lade dir eclipse runter. eclipse.org
Da hast du beides in einem, eine Autovervollständigung und kannst dir den Code formatieren lassen.

__________________
Syntax Highlighting fürs Board (Link)
19.01.2015 13:25 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 » abstrakte klasse