Verbung

Exodevil

Mitglied
Hallo

ich hab hier ein kleines Verständisproblem mit Vererbungen.

Ich habe eine Klasse Offlineuser und eine Onlineuser mit jeweils ein paar Variablen, wobei der Onlineuser vom Offlineuser erbt.

Wenn ich jetzt die User aus der Datenbank lese und via Kosntruktor einen neuen Onlineuser erstelle, wird dann automatisch ein Offlineuser mit erstellt oder muss ich das selber noch machen?

Hier noch der Code der beiden Klassen
Java:
public class OfflineUser {

    private UUID uuid;
    private String name;
    private Level level;


    public UUID getUuid() {
        return uuid;
    }

    public void setUuid(UUID uuid) {
        this.uuid = uuid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Level getLevel() {
        return level;
    }

    public void setLevel(Level level) {
        this.level = level;
    }

}

Java:
public class OnlineUser extends OfflineUser {
 
    private Player player;
    private String ip;
    private long logintime;
 
    public OnlineUser(UUID uuid, String name) {
        setName(name);
        setUuid(uuid);
    }

 
    public Player getPlayer() {
        return player;
    }

    public void setPlayer(Player player) {
        this.player = player;
    }
 

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }
 

    public long getLogintime() {
        return logintime;
    }

    public void setLogintime(long logintime) {
        this.logintime = logintime;
    }
 
}


Ich wäre sehr dankbar wenn mir jemand auf die Sprünge helfen könnte :)

Nachtrag: Der Titel sollte eigentlich Vererbung heißen...
 
Zuletzt bearbeitet von einem Moderator:

InfectedBytes

Top Contributor
es wird natürlich kein extra offlineuser miterstellt.
Du erzeugst eine Instanz von OnlineUser und da OnlineUser von OfflineUser erbt, ist jeder OnlineUser auch ein OfflineUser.
 

Exodevil

Mitglied
Danke das hat mir schonmal weitergeholfen.

Im Klartext also:
Ich will wenn der Server startet alle Daten der Offlineuser laden und nur wenn ein User tatsächlich joint einen Onlineuser erstellen. Passt also alles soweit.
 

InfectedBytes

Top Contributor
ist meiner meinung nach kein sehr schönes design. Das führt halt dazu, dass du viele sachen doppelt speicherst. Denn wenn User X online geht, erzeugst du wieder ein neues Online Objekt, welches die gleichen Daten hat, wie schon das entsprechende Offline Objekt, plus ein paar Daten mehr... => Unnötige Redundanz
Ich würde lieber nur sowas wie ein User Objekt erzeugen, welches die Offline Daten speichert und diesem eine Variable mitgeben, welche die Sachen speichert, welche nur für einen Online User relevant sind.
Also ganz ganz grob:
Java:
public class User {
  private UUID uuid;
  private String name;
  // ...
  private SessionData session; // null wenn offline
}
Java:
public class SessionData {
  private InetAddress ip;
  private Player player;
  private long loginTime;
  // ...
}
 

Neue Themen


Oben