ich eine übergeordnete Klasse erstellt, die ich Courrier namensEine Reihe von Kind-Objekten
public class Courrier {
private double poid;
private boolean expr;
String ad;
private char z ;
public Courrier(double poid, boolean expr, String ad, char z) {
this.poid = poid;
this.expr = expr;
this.ad = ad;
this.z = z;
}
public double getPoid() {
return poid;
}
public boolean isExpr() {
return expr;
}
public String getAd() {
return ad;
}
public char getZ() {
return z;
}}
und zwei Kinder Klassen beide enthält eine Methode namens affranchir()
dann eine Klasse dort -Test ist:
public class Test {
public static void main(String[] args) {
Courrier[] T = new Courrier[4];
T[0] = new Lettre(200, true, "London", 'C', "A3");
T[1] = new Colis(3000, false, "Barcelone", 'B', 50);
T[2] = new Lettre(500, false, "Béchar", 'A', "A4");
T[3] = new Colis(150, true, "New york", 'C', 175);
double tarif=0;
for (int i = 0; i < T.length; i++) {
System.out.println(T[i].affranchir());
tarif+=T[i].affranchir();
}
System.out.println(tarif);
}}
gut gibt es ein Problem, es heißt Die Methode affranchir()
ist nicht definiert für den Typ Courrier und ich möchte es ohne Gießen machen, gibt es bitte irgendeinen Weg?
Implementieren Sie die Methode in der Basisklasse Courrier (und die untergeordneten Klassen '@ Override' it) - sonst nicht (ich bin nicht Reflexion als besser Zählen Lösung zum Casting) – UnholySheep
Java entscheidet, welche Methode basierend auf dem Referenztyp und nicht auf dem tatsächlichen Typ zugänglich ist. Wenn Sie über Ihre Superklassenreferenz auf die Methode affranchir() zugreifen wollen, muss dieser Typ diese Methode haben. Aber vielleicht brauchst du dein Array nicht wirklich von deiner Oberklasse? Vielleicht können Sie eine separate "Schnittstelle" erstellen, die Methoden enthält, die Sie aufrufen möchten, und dann Ihre Unterklassen diese Schnittstelle implementieren lassen? Auf diese Weise können Sie 'YourInterface []' Array anstelle von 'Courrier []' Array verwenden, das alle Instanzen enthalten kann, die diese Schnittstelle implementieren. – Pshemo