Variablen gehen beim Speichern verloren!

Hallo,
ich bin neu in diesem Forum, bin Anfänger in der Programmiersprache Java und dies ist mein erster Forenbeitrag.
Ich habe ein Problem mit der Speicherung eines Objektes.

Folgendes:
Ich habe eine Abstrakte Klasse namens Fahrzeug angelegt:

package fahrzeug;

abstract class Fahrzeug {
	protected String bez;
	protected short geschw;
	protected short geschwML;
	protected short geschwOL;
	protected boolean verliehen;
	protected short plaetze;
	protected short raeder;
	protected short Trg;
	
	abstract void eingeben();
	
	abstract boolean anzeigen();
	
	abstract boolean verleihen();
}

Von dieser habe ich eine Klasse Auto abgeleitet:

import java.io.*;

public class Auto extends Fahrzeug implements Serializable {

	public void eingeben() {
		Scanner eingabe = new Scanner(System.in);
		boolean richtigEingabeAuto = false;
		while(!richtigEingabeAuto) {
			try {
				System.out.print("
Bezeichnung: ");
				bez = eingabe.nextLine();
				System.out.print("
Sitzplaetze: ");
				plaetze = eingabe.nextShort();
				System.out.print("
Maximale Geschwindigkeit: ");
				geschw = eingabe.nextShort();
				richtigEingabeAuto = true;
			}
			catch (Exception e) {
				System.err.println("Fehler bei der Eingabe von Werten, versuchen sie es noch einmal!");
				richtigEingabeAuto = false;
			}
		}
	}
	
	public boolean anzeigen() {
		System.out.print("
" + bez + "," + plaetze + " Sitzplaetze," + geschw + "km/h Maximale Geschwindigkeit");
		if (verliehen) {
			System.out.print(",verliehen
");
		}
		else {
			System.out.print("
");
		}
		return true;
	}
	
	public boolean verleihen() {
		if(verliehen) {
			verliehen = false;
			return false;
		}
		else {
			verliehen = true;
			return true;
		}
	}
}

Ich habe nun ein Programm, welches ein Objekt von Auto erzeugt, seine Methode eingeben() aufruft
und die dabei ermittelten Werte mit der Methode anzeigen() auf dem Bildschirm ausgibt.
Anschließend wird dieses Objekt in der Datei car.dat gespeichert:

import java.io.*;

import fahrzeug.Auto;

public class CarSave {
	public static void main(String[] args) {
		Auto ente = new Auto();
		ente.eingeben();
		ente.anzeigen();
		try {
			FileOutputStream carDat = new FileOutputStream("car.dat");
			ObjectOutputStream carOut = new ObjectOutputStream(carDat);
			carOut.writeObject(ente);
			carOut.close();
		}
		catch (Exception e) {
			e.getMessage();
		}
	}
}

Dann gibt es noch ein Programm, welches das Objekt wieder ausliest und auf dem Bildschirm ausgibt:

import java.io.*;

import fahrzeug.Auto;

public class CarRead {
	public static void main(String[] args) {
		Auto einAuto;
		try {
			FileInputStream carDat = new FileInputStream("car.dat");
			ObjectInputStream carIn = new ObjectInputStream(carDat);
			einAuto = (Auto) carIn.readObject();
			carIn.close();
			einAuto.anzeigen();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Und jetzt mein Problem. Beim Programm welches das Objekt speichert, wird das Objekt vorher noch einmal
ausgegeben. Das sieht dann etwa so aus:
Opel Combo,5 Sitzplaetze,170km/h Maximale Geschwindigkeit
Im Programm welches das Objekt wieder ausliest, sieht die Ausgabe dann aber so aus (und zwar immer):
null,0 Sitzplaetze,0km/h Maximale Geschwindigkeit
und ich verstehe nicht, weshalb das Objekt nicht richtig gespeichert(bzw. ausgelesen) wird.

Ich hoffe jemand kann mir helfen.

PS: Das Programm ist lediglich ein Test für das Speichern von Dateien für ein größeres und sinnvolleres Projekt.

Ich habe gerade selbst die Lösung gefunden.
Im Klassenkopf der abstrakten Klasse Fahrzeug musste man noch ein:
implements Serializable
hinzufügen, dann geht es.
Ich weiß nicht weshalb das so ist, aber auf jeden Fall weiß ich jetzt, dass wenn eine Klasse von einer abstrakten Oberklasse abgeleitet wird, die Oberklasse ebenfalls Serializable implementieren muss.

Wenn du sowas wie e.getMessage(); in den catch-Block schreibst, merkst du von der Exception, die dir weitergeholfen hätte, natürlich nix…