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.
Was genau heisst das ? Was zeichnet denn beispielsweise einen Datentypen "A" (sofern ich eine Klasse "A" habe ) aus ? Bei einem "int" ist es klar. Da habe ich dann halt einen begrenzten Zahlenraum. Bei "boolean" hab ich halt true oder false.
Aber was zeichnet meinen selbsternannten Datentypen aus ?
Wenn die Klasse leer ist garnichts, dann ist es einfach nur ein Name ohne Funktion
Wenn ich dir dagegen eine Klasse "Buch" schreibe die dir die Funktionen lesen, reinschreiben etc anbietet und die auch Infos über den Text im buch geben kann macht es auf einmal viel mehr sinn zu sagen "das Objekt hier ist ein Buch (vom Typ Buch)" anstatt "das ding hier ist eine sammlung aus Strings bzw-char arrays mit manipulations und zugriffsmethoden der eigenen daten" - oder?
Ok . Irgendwie löst das mein Verständnisproblem nur bedingt. Ich denke auch das mein Verständnisproblem irgendwie woanders liegt.
Mal ein Beispiel :
Java:
class Fortbewegungsmittel {
}
class Landfahrzeug extends Fortbewegungsmittel {
}
class Auto extends Landfahrzeug {
}
public class Test {
Public static void main (String[] args){
Fortbewegungsmittel myAuto = new Auto();
}
}
Ich erstelle ja das Objekt, myAuto vom Datentyp Fortbewegungsmittel. Was wäre der Unterschied wenn ich es vom Datentyp Auto oder Landfahrzeuge erstellen würde ? (Ja...die Klassen sind leer. Es geht mir rein um den Sinn )
Nein, du erstellst eine neue Instanz der Klasse Auto, der Datentyp der Variable myAuto ist aber Fortbewegungsmittel. Das bedeutet das Objekt ansich ist vom Typ Auto und hat alle Membervariablen und Methoden von Auto, du kannst aber über die Variable myAuto nur auf die Methoden und Membervariablen zugreifen die in Fortbewegungsmittel deklatiert wurden (ausser du machst einen cast)
Vllt. wäre es mal hilfreich für dich die Klassen NICHT leer zu lassen
Nein, du erstellst eine neue Instanz der Klasse Auto, der Datentyp der Variable myAuto ist aber Fortbewegungsmittel. Das bedeutet das Objekt ansich ist vom Typ Auto und hat alle Membervariablen und Methoden von Auto, du kannst aber über die Variable myAuto nur auf die Methoden und Membervariablen zugreifen die in Fortbewegungsmittel deklatiert wurden (ausser du machst einen cast)
Vllt. wäre es mal hilfreich für dich die Klassen NICHT leer zu lassen
Meistens macht man das. Es gibt aber Fälle wo es Sinn macht einen "allgemeineren" Typ zu benutzen. Beispielsweise in einem Array von Fortbewegungsmittel wo nicht nur Auto-Instanzen rein sollen.
Ein anderes Beispiel wäre folgendes:
Java:
List<String> myStrings = new ArrayList<String>();
man könnte zwar genausogut
Java:
ArrayList<String> myStrings = new ArrayList<String>();
schreiben, dann wäre es aber in Zukunft umständlicher eine andere Implementation von List zu benutzen, bspw:
Java:
List<String> myStrings = new LinkedList<String>();
Wenn myStrings einfach nur vom Datentyp List ist braucht es den Rest des Codes nicht zu interessieren ob es jetzt konkret eine LinkedList oder eine ArrayList ist, alle Methoden die man auf myStrings aufrufen will sind in List deklariert, wie die konkrete implementierung in LinkedList und ArrayList aussieht kann dem restlichen Code egal sen.
Ich erstelle ja das Objekt, myAuto vom Datentyp Fortbewegungsmittel. Was wäre der Unterschied wenn ich es vom Datentyp Auto oder Landfahrzeuge erstellen würde ? (Ja...die Klassen sind leer. Es geht mir rein um den Sinn )
Wenn du Beispielsweise eine Methode schreibst die den Verbrauch berechnet, dann ist der Methode ganz egal ob sie nen Auto bekommt, oder nen LKW, oder nen Boot, oder...
Du deklarierst die Methode dann so, dass sie nen Fortbewegungsmittel erwartet und dessen Methoden nutzt.
Wenn du Beispielsweise eine Methode schreibst die den Verbrauch berechnet, dann ist der Methode ganz egal ob sie nen Auto bekommt, oder nen LKW, oder nen Boot, oder...
Du deklarierst die Methode dann so, dass sie nen Fortbewegungsmittel erwartet und dessen Methoden nutzt.
Also geht es bei dem Datentypen um den Speicherort ? Es wäre ja dann (so wie ich es verstanden habe) sinnvoll, die Methode "Verbrauch" dann in der Klasse Fortbewegungsmittel unterzubringen.. oder ?
Also geht es bei dem Datentypen um den Speicherort ? Es wäre ja dann (so wie ich es verstanden habe) sinnvoll, die Methode "Verbrauch" dann in der Klasse Fortbewegungsmittel unterzubringen.. oder ?
Das wäre sinnvoll, ja. Zumindest wenn in deinem Programm absolut jedes Fortbewegungsmittel einen Verbrauch haben soll. Kann ja sein das du ne Klasse Fahrrad machst, was soll dann der Verbrauch sein?^^
Wenn du das so machen würdest, dann könntest du nur noch Autos der variable zuweisen.
Aber wenn evtl gibt es ja auch noch mehr: Fahrrad wäre auch ein Fortbewegungsmittel , oder ein LKW.
So können alle Klassen, die von Fortbewegungsmittel erben, auch dort zugewiesen werden.