一组子对象

时间:2017-11-28 18:26:37

标签: java arrays object inheritance

我创建了一个名为 Courrier

的父类
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;
}}

和两个子类都包含一个名为affranchir()的方法 然后有一个测试

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);
}}

它有一个问题 对于 Courrier 类型,方法affranchir()未定义 我想让它在没有铸造的情况下工作有没有可能的方法呢?

2 个答案:

答案 0 :(得分:0)

您已经创建了父类Courrier

的数组
 Courrier[] T = new Courrier[4];

然后你通过该对象调用子类的方法

T[i].affranchir();

这是唯一的错误。而不是让父类的Object生成子类的Object然后调用该方法。它肯定会奏效。 谢谢

答案 1 :(得分:0)

向courrier添加抽象方法

public abstract class Courrier {

/* code */

 public abstract void affranchir();

/* code */

}
相关问题