使用数组对象类抽象

时间:2015-02-26 18:40:05

标签: java arrays class methods abstract

我有1个问题,我无法打开我的方法,我不好低垂。 我有3个班级,1个是抽象的。

public abstract class Canideos {
    public abstract String ladrar();
}

public class Gato extends Canideos{
    @Override
    public String ladrar() {
        String ladrar="miau miau";
       return ladrar;
    }    
    public String miar(){
    String mi="miau a miau";
            return mi;
    }    
}

我的动力是:

Canideos cani[]= {new Cao(), new Gato()}; // it works :)
        for(int i=0;i<2;i++){
            System.out.println(cani[i].ladrar());
        }
String a;

我的问题是:/ /

a = (String) cani[1].Gato().miar();
a = cani[1].miar();

我无法打开方法miar()Gato类。

1 个答案:

答案 0 :(得分:5)

将超类实例向下转换为子类实例的语法类似于常规转换:

Gato gato = (Gato) cani[1];
a = gato.miar();

或等效地,只是:

a = ((Gato) cani[1]).miar();

请注意第二种情况中的附加括号。它们仅用于优先目的,否则将被解析为(Gato) (cani[1].miar()),试图将miar的结果转换为Gato