Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Also soweit ich Klassen verstanden habe sind Klassen im Grunde dasselbe wie Datentypen, nur dass sie aus verschiedenen Datentypen bestehen können. Wenn ich nun auf die einzelnen Typen zugreifen will muss ich ein Objekt erzeugen oder? Checke dass nicht so ganz.
Genau...
Jede Klasse ist gleichzeitig ein Datentyp...Da eine Klasse nur eine Art Schablone ist, musst du zuerst ein Objekt mit dieser Schablone erstellen, um sie zu benutzten...
Klassen sind sowas wie Baupläne für Objekte. Klassen beschreiben also Eigenschaften und Funktionen an Hand von Variablen und Methoden. Ein Objekt ist eine manifestierte Klasse, also etwas, was vom Reißbrett in die Produktion gegangen ist und nun benutzt werden kann. Objekte sind benutzerdefinierte Datentypen.
Wenn Du auf (private) Variablen eines Objektes zugreifen möchtest, geschieht das im Allgemeinen über (public) Methoden. Methoden werden in diesem Fall auf einer Instanz (Objekt) aufgerufen. Also musst Du ein Objekt erzeugen, um auf seine Methoden Zugriff zu bekommen.
Klassen sind sowas wie Baupläne für Objekte. Klassen beschreiben also Eigenschaften und Funktionen an Hand von Variablen und Methoden. Ein Objekt ist eine manifestierte Klasse, also etwas, was vom Reißbrett in die Produktion gegangen ist und nun benutzt werden kann. Objekte sind benutzerdefinierte Datentypen.
Wenn Du auf (private) Variablen eines Objektes zugreifen möchtest, geschieht das im Allgemeinen über (public) Methoden. Methoden werden in diesem Fall auf einer Instanz (Objekt) aufgerufen. Also musst Du ein Objekt erzeugen, um auf seine Methoden Zugriff zu bekommen.
Eine Klasse ist ein Bauplan und ein Objekt ist eine konkrete Instanz dieses Bauplans. Eine Klasse definiert bestimmte Eigenschaften (Member) und Aktionen (Methoden).
Beispiel:
Klasse:
Code:
public class Person
{
private String name;
public Person(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
}
Danke für die Antworten, nun aber noch ein paar Fragen
Beispiel:
Code:
class Date{
int day;
String month;
int year;
}
Die verschiedenen Datentypen int und String sind sozusagen die Baupläne für das Objekt. Wenn ich nun schreibe:
Date x
so erzeuge ich eine Variable x mit dem Datentyp Date welche aber nirgends hinzeigt oder? Also muss ich zuerst ein Objekt erzeugen wo ich meine Werte die ich für day, month und year eingeben möchte hinspeichern kann. Ich muss auch ein Objekt erzeugen dass ich überhaupt auf die Datentypen zugreifen kann. Also wenn ich nur
Date x
schreibe, dann hab ich zwar eine Variable vom Datentyp Date kann aber nichts damit anfangen.
Wenn ich nun Date x = new Date() schreibe erzeuge ich ein Objekt, von dem ich aus auf day month und year zugreifen kann. Also gehören Objekte und Klassen unwiderruflich zusammen, oder kann man Objekte auch für ganz normale nicht durch eine Klasse erzeugten Datentypen wie int, String erzeugen ?
andere Frage:
L-ectron-X hat gesagt.:
Wenn Du auf (private) Variablen eines Objektes zugreifen möchtest, geschieht das im Allgemeinen über (public) Methoden. Methoden werden in diesem Fall auf einer Instanz (Objekt) aufgerufen. Also musst Du ein Objekt erzeugen, um auf seine Methoden Zugriff zu bekommen.
Was sind meine Variablen im Objekt
z.b.: x.month = "November" ?
Muss ich auf sie zugreifen wenn ich z.b. die Variablen am Bildschirm erscheinen lassen will, und das kann dann nur über Methoden, ähnlich den Strings passieren?
Ein Bauplan für ein Auto beschreibt, aus welchen Teilen oder Baugruppen ein Auto besteht. Dabei ist z.B. der Motor oder der Fahrersitz eine Baugruppe eines Autos. Eine Baugruppe besteht wiederum aus mehreren Teilen.
Ebenso kann eine Klasse aus verschiedenen Klassen zusammen gesetzt sein, um am Ende eine bestimmte Funktionalität bereit stellen zu können.
Im Gegensatz zu C/C++ gibt es in Java gibt es keine Zeiger. Grob gesagt sind Zeiger in C/C++ Variablen, die auf eine bestimmte Speicheradresse zeigen, in der ein Wert eines bestimmten Datentyps liegt. Eine ähnliche Funktion haben Referenzen in Java. Referenzvariablen zeigen auf Objekte im Heap (ein Speicherbereich der VM).
Code:
Auto meinAuto = new Auto();
new erzeugt durch Aufruf des Konstruktors der Klasse Auto ein Objekt vom Typ Auto auf dem Heap und speichert eine Referenz (eine Art Zeiger) auf dieses Objekt in der Referenzvariablen meinAuto vom Typ Auto ab.
Diese Referenzvariable kann nun die Methoden des Objektes vom Typ Auto aufrufen.
Code:
meinAuto.rechtsBlinken();
Man muss unterscheiden zwischen den primitiven Datentypen z.B. int, long, byte, short, char, boolean, double, float und den Objekten, also den benutzerdefinierten bzw. komplexen Datentypen.
Im Gegensatz zu Objekten haben primitive Datentypen keine Methoden und Variablen, sondern nur einen Wertebereich, für den sie stehen. Z.B int für ganze Zahlen zwischen -2147483648 bis 2147483647.
Sie stellen quasi die kleinsten nicht weiter zerlegbaren Teile des Autos dar. Vergleichbar etwa mit einer Schraube oder einer Mutter.
Jeder primitive Datentyp hat in Java auch eine so genannte Wrapperklasse. Die Wrapperklasse erlaubt ein komfortables, unkompliziertes Arbeiten mit dem primitiven Datentyp. Für den Datentyp int ist es bspw. die Klasse Integer, für double ist es Double usw.
String ist kein primitiver Datentyp sondern eine mächtige Klasse mit sehr nützlichen Methoden.