【问题标题】:Using array the objects the class abstract使用数组对象类抽象
【发布时间】:2015-02-26 18:40:04
【问题描述】:

我有 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();

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

【问题讨论】:

标签: java arrays class methods abstract


【解决方案1】:

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

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

或者等效地,只是:

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

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

【讨论】:

  • 谢谢大家!!!我试过但有一个 For Each ,但没有工作...... for(Canideos a:cani){ System.out.println("# "+a.ladrar()); } } a = ((Gato) cani[1]).miar();在 For Each 之后,不起作用...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 2016-06-13
  • 2011-05-01
相关资源
最近更新 更多