Unterklasse aus Oberklassen-Array

Hallo
Ich kann mir vorstellen, dass diese Frage schon häufiger kam, aber ist es möglich, dass wenn ich eine Klasse X habe und eine Klasse Y, die aus X erbt; Und ich eine neue Y klasse = new Y(); in ein Array aus X packe; Dann mit xArray[0] irgendwie wieder das Objekt der Klasse Y bekomme, sodass ich ein Attribut id aus xArray[0] rausbekomme, das nur in der klasse Y definiert ist und nicht in X?

Das wurde sogar erst vor zwei Tagen oder so gefragt, nur in Hinblick auf Sets: http://forum.byte-welt.net/java-forum-das-java-welt-kompetenz-zentrum-wir-wissen-und-helfen-/allgemeine-themen/17545-generics.html

meinst Du so?```public class Test {

public static void main(String[] args) {
	X x = new Y(4711);
	System.out.println(x.getId());
}

}

abstract class X {
abstract public int getId();
}

class Y extends X {

private final int id;
public Y(int id){ this.id = id;}

@Override
public int getId() {
	return id;
}

}```

bye
TT

Polymorphie? Bzw. in zwei Sichten liegen zwei Sichten auf das Elment vor? (umgangssprachlich forml.)

Ja, so meine ich es, bloß würde ich eher ungern die Methode in der Superklasse definieren, da es in meinem konkreten Fall um beliebig viele verschiedene Attribute in vielen Unterklassen geht, und ich nicht viel davon Halte, dass da so was steht wie:

public class X{
...
//Nur für Klasse Y(erbt aus X)
public int getID();
public float getFloat();
public double[] getDoubleArray();

//Nur für Klasse Z(erbt aus X)
public byte getByte();
public String getName();

//und so weiter, für jede Klasse, die aus X erbt
}

Wenn die Unterklassen so verschieden sind, dann stellt sich mir die Frage, wieso sie von einer gemeinsamen Elternklasse erben?

Es ist ja immer noch das gleiche Objekt: Du musst prüfen ob es vom Typ Y ist (instanceof), dann downcasten, dann kannst du die (nur in Y verfügbare) Methode aufrufen

Danke, jetzt funktioniert’s. Ich hatte das schon mal so probiert, doch da kam eine ClassCastException, komisch.