Java-Anfänger

Status
Nicht offen für weitere Antworten.

eugen graf

Mitglied
Hallo liebe Forumianer!

Also folgendes:

es ist mein erster Topic, deshalb nicht lachen, wenn was komisches drin steht.

Ich habe bis jetzt in C und Labview (www.labviewforum.de) programmiert, also keine OOP-Sprachen. Habe viel gutes während meines Studiums gehört und auch ein wenig C++ programmiert. Nun wollte ich mal endlich OOP lernen und habe Java als Mittel dafür ausgewählt, weil KOSTENLOS (Im Unterschied zu C#) und C++ von Syntax ähnlich.

Dann habe ich mir ein ziemlich neues Buch"JAVA lernen mit Eclipse 3" gekauft. Das Buch finde ich nicht so toll (habe schon vieles über Programmierung gelesen) und habe einige Fragen.

Objekte sind Instanzen von Klassen. Man muss also zuerst eine Klasse definieren und dann beliebig viele Objekte von dieser Klasse erstellen. Alle Objekte von dieser Klasse haben dann die gleichen Methoden und Eigenschaften. Die Klassen kann ich vererben (oder ableiten, ob es das gleiche bedeutet weiss ich nicht), wozu ist es gut?

Im Buch steht dazu ein Beispiel und bedeutet, dass man eine Klasse aus einer Klasse und einer Schnittstelle (Interface) vererben kann. Steht aber auch, dass man keine Klasse von mehreren Klassen vererben kann.

Das ganze wird dazu benutzt um auch ähnliche Klassen ohne Code-Redundanz erzeugen zu können. Und die Unterschiede von abgeleiteten Klassen werden durch Interfaces vervollständigt (meine Vermutung). Das heist aber, dass man die Methoden im Code doch mehrfach implementieren muss. Wenn mir jemand die Interfaces besser erklären könnte, wäre ich sehr dankbar.

Alles andere kommt später, wenn ich mich mit EXEs und GUIs befasse.

Danke erstmal, Eugen

Code:
package carlipso.model.bo;
public class Kfz {
	private String art;
	public String getArt() {
		return art;
	}
	public void setArt(String art) {
		this.art = art;
	}
	private String farbe;
	public String getFarbe() {
		return farbe;
	}
	public void setFarbe(String farbe) {
		this.farbe = farbe;
	}
	private String marke;
	public String getMarke() {
		return marke;
	}
	public void setMarke(String marke) {
		this.marke = marke;
	}
	private String model;
	public String getModel() {
		return model;
	}
	public void setModel(String model) {
		this.model = model;
	}
	public Kfz(String art, String farbe, String marke, String model) {
	}
}

Code:
package carlipso.model.bo;

public class Lkws extends Kfz implements Außenbordmotor {


	public Lkws(String art, String farbe, String marke, String model) {
		super(art, farbe, marke, model);
	}
	public int getSchraubendurchmesser() {
		return schraubendurchmesser;
	}

}

Code:
package carlipso.model.bo;
public interface Außenbordmotor {
	public final int schraubendurchmesser = 30;
	public int getSchraubendurchmesser();
}
 

Wildcard

Top Contributor
zunächst mal ein gutes (kostenloses) Buch für den Einstieg:
http://www.galileocomputing.de/openbook/javainsel5/
Vererbung verwendet man um Code-Redundanzen zu vermeiden.
Das bedeutet das eine Oberklasse eine bestimmte Funktionalität vorgibt, die Unterklassen nach belieben erweitern können.
Beispiel Klasse Fahrzeug:
Ein Fahrzeug hat beispielsweise immer eine Farbe und kann sich bewegen.
Ein Auto ist auch ein Fahrzeug, jedoch konkreter und erbt deshalb von Fahrzeug.
Damit hat es automatisch eine Farbe und kann sich bewegen.
Ein Auto kann zusätzlich aber noch abgeschlossen werden, kann also mehr als seine Überklasse das Fahrzeug.

Von Interfaces kann man nicht erben, sondern diese nur Implementieren.

Ein Interface ist vergleichbar mit einem Header-File in C++. Es enthält keine Logik, sondern gibt nur eine Schnittstelle vor.
Interfaces sind unter anderem wichtig, da in Java nur von einer Klasse geerbt werden kann, man jedoch beliebig viele Interfaces implementieren kann.
Man verwendet sie um Klassen bestimmte Fähigkeiten zu geben ohne eine bestimmte Vererbungshirarchie vorauszusetzen.
Ein gutes Beispiel dafür ist das Comparable Interface.
Eine Klasse die dieses Interface implementiert muss eine über eine int compareTo(Object) Methode verfügen, und gilt damit als sortierbar.
Hätte man stattdessen eine Basisklasse Comparable gemacht von der man erben muss, so könnte man nur Objekte sortieren die von Comparable erben, was eine ziemliche Einschränkung bedeuten würde.

Das alles war jetzt sehr grob umrissen, das Buch wird dir bessere Antworten liefern können, die du nach und nach durch eigene Erfahrungen besser verstehen wirst.
 

eugen graf

Mitglied
Vielen Dank für die Antwort.

Ein Interface ist vergleichbar mit einem Header-File in C++. Es enthält keine Logik, sondern gibt nur eine Schnittstelle vor.
Interfaces sind unter anderem wichtig, da in Java nur von einer Klasse geerbt werden kann, man jedoch beliebig viele Interfaces implementieren kann.

Header-File in C++ enthält zwar keine Logik, es ist aber mit dem dazugehörigen CPP eng verbunden. Wenn man also einen Header in eine andere H oder CPP Datei einbindet, dann hat man auch den Zugriff auf die definierten Funktionen. Wenn ich aber einen Interface implementiere muss ich noch in jeder Klasse die Funktionalität der Methode beschreiben. Warum ist dann die Funktionalität dieser Methode dann nicht in dem Interface definiert? Sondern in der Klasse, wo sie implementiert ist.

Eine Klasse die dieses Interface implementiert muss eine über eine int compareTo(Object) Methode verfügen, und gilt damit als sortierbar.
Hätte man stattdessen eine Basisklasse Comparable gemacht von der man erben muss, so könnte man nur Objekte sortieren die von Comparable erben, was eine ziemliche Einschränkung bedeuten würde.

Verstehe ich noch nicht.

Gruss
 
B

Beni

Gast
Ein Interface funktioniert wie eine Steckdose: es gibt eine gewisse Form vor, aber kümmert sich nicht um den Resten.

Eine Steckdose kann sowohl von Staubsaugern als auch von PC's, oder Verländerungskabeln benutzt werden - sie alle implementieren das entsprechende Interface (Eine Buchse mit 2 Steckern).

Eine Dampflokomotive funktioniert hingegen nicht mit einer Steckdose, hier fehlt das Interface.

Die Geräte die einem Steckdoseninterface entsprechen sind so unterschiedlich, dass es nicht möglich ist, ein "Basisgerät" zu bauen.

Schlussendlich sind Interfaces vorallem dazu da, die Kommunikation zwischen unabhängigen Modulen eines Programmes zu ermöglichen. Als Beispiel der Sortieralgorithmus: wenn er eine Liste sortiert muss er wissen, welche Elemente grösser als andere Elemente sind. Das ist die einzige Eigenschaft die den Algorithmus interessiert, alles andere ist egal. Diese Eigenschaft ist derart abstrakt, dass man sie unmöglich allgemein implementieren könnte - die Läufer eines 100-Meter Laufes werden anders sortiert als Briefmarken - und deshalb benutzt man nur ein Interface (anstelle einer konkreten Basisklasse).
 

eugen graf

Mitglied
Oni hat gesagt.:
Guten Morgen,

hier ein sehr schönes Beispiel für ein Interface, vielleicht verstehst du es dann besser.

Interface Beispiel (von Sky)

Gruß

Danke, ein sehr gutes Beispiel. Ich glaube ich checke langsam wozu die Interfaces gut sind. Es geht viel mehr in Richtung Polymorphie. Stimmt es?

Jedoch verstehe ich folgende Zeile:

Code:
Tier[] tiere = new Tier[3];

aus dem Beispiel mit Tieren nicht.

Das erste Wort "Tier[]" in der Zeile ist der Datentyp des Objektes "tiere" und bedeutet, dass das Objekt tiere ein Array aus einzelnen Objekten vom Typ Tier ist. Aber der Typ Tier ist ein Interface. Darf man wirklich aus einem Interface ein Objekt erzeugen?

Gruss, Eugen
 

SamHotte

Top Contributor
Mit dem Befehl erzeugst du das Array. Die einzelnen Objekte in dem Array sind damit noch nicht erzeugt, das muss anschließend geschehen.
 

Leroy42

Top Contributor
eugen graf hat gesagt.:
und bedeutet, dass das Objekt tiere ein Array aus einzelnen Objekten vom Typ Tier ist. Aber der Typ Tier ist ein Interface. Darf man wirklich aus einem Interface ein Objekt erzeugen?

Besser: aus einzelnen Objekten besteht, die das Interface Tier implementieren.

D. h. das Array kann alle möglichen Objekte aufnehmen; einzige Vorraussetzung: Sie
müssen das Interface implementieren, oder anders gesagt, als Tier ansprechbar sein.

Dem Verfasser dieser Anweisung ist es also egal, Instanzen welcher Klasse
sich in seinem Array herumtreiben; hauptsache er kann auf jedes von ihnen die,
im Interface Tier vorausgesetzten, Methoden aufrufen.

Beispiel:

Code:
interface ZweiDFläche
  public double fläche();
}

class Rechteck implements ZweiDFläche {
  int a, b;
  //...
  public double fläche() {return a*b;};
}

class Kreis implements ZweiDFläche {
  int radius;
  //...
  public double fläche() {return Math.PI*r*r;};
}
...
ZweiDFläche[] flächen = {new Rechteck(6,7), new Kreis(42};
System.out.println(flächen[0].fläche());
System.out.println(flächen[1].fläche());
 

eugen graf

Mitglied
Leroy42 hat gesagt.:
Besser: aus einzelnen Objekten besteht, die das Interface Tier implementieren.

D. h. das Array kann alle möglichen Objekte aufnehmen; einzige Vorraussetzung: Sie
müssen das Interface implementieren, oder anders gesagt, als Tier ansprechbar sein.

Dem Verfasser dieser Anweisung ist es also egal, Instanzen welcher Klasse
sich in seinem Array herumtreiben; hauptsache er kann auf jedes von ihnen die,
im Interface Tier vorausgesetzten, Methoden aufrufen.

Beispiel:

Code:
interface ZweiDFläche
  public double fläche();
}

class Rechteck implements ZweiDFläche {
  int a, b;
  //...
  public double fläche() {return a*b;};
}

class Kreis implements ZweiDFläche {
  int radius;
  //...
  public double fläche() {return Math.PI*r*r;};
}
...
ZweiDFläche[] flächen = {new Rechteck(6,7), new Kreis(42};
System.out.println(flächen[0].fläche());
System.out.println(flächen[1].fläche());

Na endlich habe ich es verstanden. Also dein Beispiel finde ich am besten. Oder habe ich jetzt mehr Ahnung und kann deinen Code sofort verstehen.

Vielen Dank für die Erklärungen, Eugen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
M Tipps für einen Java-Anfänger Java Basics - Anfänger-Themen 5
S Java für Anfänger: Probleme mit read() Java Basics - Anfänger-Themen 20
W Erste Schritte OOP-Lektüre für Anfänger/Umsteiger von Clipper auf Java Java Basics - Anfänger-Themen 6
J Welches Java-Videotutorial für Anfänger empfehlenswert? Java Basics - Anfänger-Themen 7
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
P Java anfänger tutorial gesucht Java Basics - Anfänger-Themen 12
B Java für Anfänger Java Basics - Anfänger-Themen 7
R Java-Anfänger-Projekt-Begleiter gesucht Java Basics - Anfänger-Themen 18
T Collections Java Anfänger - Array-Struktur vollkommen unklar Java Basics - Anfänger-Themen 2
K Java Anfänger und paar Fragen=D Java Basics - Anfänger-Themen 7
S Viele Fragen von einem Anfänger in Java Java Basics - Anfänger-Themen 2
T Fragen vom Java Anfänger Java Basics - Anfänger-Themen 8
J Java Anfänger .jar file erstellen Java Basics - Anfänger-Themen 9
C Java programm mit Datenbank für Anfänger Java Basics - Anfänger-Themen 21
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
S Java Anfänger - Tutorial Frage Java Basics - Anfänger-Themen 10
L Java Programier Aufgaben für Anfänger Java Basics - Anfänger-Themen 5
B in & out class problem (java anfängeR) Java Basics - Anfänger-Themen 5
K Java anfänger Java Basics - Anfänger-Themen 2
V Java-Anfänger... und dann? Java Basics - Anfänger-Themen 18
J Anfänger-Problem: Rechnen mit Java Java Basics - Anfänger-Themen 3
W Java Anfänger... Finde fehler nicht Java Basics - Anfänger-Themen 11
C Anfänger in Java Java Basics - Anfänger-Themen 7
Spin Konto (großes Projekt für anfänger in Java ^^) Java Basics - Anfänger-Themen 7
S Blutiger Java Anfänger braucht dringend Hilfe Java Basics - Anfänger-Themen 4
B ich bin ein Anfänger in java Java Basics - Anfänger-Themen 7
S Total Anfänger in Java Java Basics - Anfänger-Themen 2
M ich bin java-anfänger! Java Basics - Anfänger-Themen 15
T .für Anfänger - Struktur des Quellcodes in Java? Java Basics - Anfänger-Themen 8
M PircBot Java Anfänger Problem Java Basics - Anfänger-Themen 18
N kennt ihr ein gutes java forum für anfänger? Java Basics - Anfänger-Themen 5
R Anfänger-Tutorial Java + Eclipse Java Basics - Anfänger-Themen 4
M Java-Anfänger Aufgabe Java Basics - Anfänger-Themen 3
M Java-Anfänger sucht Lektüre Java Basics - Anfänger-Themen 5
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben