Also ich habe gerad ein Problem
Ich habe verschiedene Seiten.
Zum einen ExtSite(Externe Seiten) und IntSite(Interne Seiten). Beide Erben von Site.
Site hat das Attribut siteName.
ExtSite sollen später Seiten im Internet sein, deshalb haben sie noch als Attribut siteURL vom Typ String.
IntSite soll später eine konkrete Seite werden die unter anderem ein ArrayList<Link> enthält.
Diese Links haben die Attribute linkName und linkZiel.
linkZiel ist vom Typ Site.
Jetzt das Problem.
Ich kann wenn ich über linkZiel auf eine Seite vom Typ IntSite oder ExtSite zugreifen möchte nur auf die Methoden und Attribute von Site zurückgreifen.
Der kritische Punkt ist sicher, dass linkZiel vom Typ Site ist und IntSite/ExtSite davon zwar erben, aber halt angenommen wird die beiden Typen wären Site.
nochmal pseudo code der konstellation
Hoffe das ist einigermassen verständlich! Falls das prinzipiell nicht möglich ist, wär es nett wenn ihr Alternativen wüsstet ;-)
Ich habe verschiedene Seiten.
Zum einen ExtSite(Externe Seiten) und IntSite(Interne Seiten). Beide Erben von Site.
Site hat das Attribut siteName.
ExtSite sollen später Seiten im Internet sein, deshalb haben sie noch als Attribut siteURL vom Typ String.
IntSite soll später eine konkrete Seite werden die unter anderem ein ArrayList<Link> enthält.
Diese Links haben die Attribute linkName und linkZiel.
linkZiel ist vom Typ Site.
Jetzt das Problem.
Ich kann wenn ich über linkZiel auf eine Seite vom Typ IntSite oder ExtSite zugreifen möchte nur auf die Methoden und Attribute von Site zurückgreifen.
Der kritische Punkt ist sicher, dass linkZiel vom Typ Site ist und IntSite/ExtSite davon zwar erben, aber halt angenommen wird die beiden Typen wären Site.
nochmal pseudo code der konstellation
Code:
public class Site{
private String name;
....
}
public class IntSite extends Site{
private ArrayList<Link> links = new ArrayList(); //Enthaelt saemtliche Links
....
}
public class ExtSite extends Site{
private String url;
....
}
public class Link{
private String linkName;
private Site linkZiel;
....
}
Hoffe das ist einigermassen verständlich! Falls das prinzipiell nicht möglich ist, wär es nett wenn ihr Alternativen wüsstet ;-)