は、私たちが人クラスなぜインターフェイスでキャストされたオブジェクトをキャストする必要がありますか? Javaで
class Person{
public void eats(Edible fruit){
fruit.getDueDate();
}
}
食用
public interface Edible {
public boolean isEdible();
}
class Fruit Implements Edible{
public String getDueDate(){
return this.dueDate;
}
public boolean isEdible(){
return True;
}
}
とを実装するクラスフルーツを持っていると私は
Edible apple = new Fruit();
Person p1 = new Person()
p1.eats(apple)
が、以下のかと言うことができます私は必要なのでそれは動作しませんこれを再びFruitにキャストするには、コンパイラが言うように:
class Person{
public void eats(Edible fruit){
Fruit fruit = (Fruit) fruit;
fruit.getDueDate();
}
}
なぜですか?私はオブジェクトを投げずにそのメソッドにアクセスできると思った。
'Edible'は実際に' isEdible'メソッドを宣言していますか? – user2357112
変数について知っている唯一のことは、 'Edible'です。このケースでオブジェクトをキャストすべきではありません。実際には何かを保証することはできないので、' Edible'だけです。 – MadProgrammer
なぜ地獄ですか? * false *を返すisEdibleメソッドを実装しているEdibleそれは食用かどうか? – user2357112