interface Shape {
public double area();
}
class Circle implements Shape {
private double radius;
public Circle(double r){radius = r;}
public double area(){return Math.PI*radius*radius;}
}
class Square implements Shape {
private int wid;
public Square(int w){wid = w;}
public double area(){return wid *wid;}
}
public class Poly{
public static void main(String args[]){
Shape[] s = new Shape[2];
s[0] = new Circle(10);
s[1] = new Square(10);
System.out.println(s[0].getClass().getName());
System.out.println(s[1].getClass().getName());
}
}
ポリモーフィズムの概念を理解するために、次の投稿 ( https://stackoverflow.com/a/4605772/112500 ) を見つけましたが、Charlie が実装されていないメソッドを使用して Shape クラスを作成したことに気付きました。
コードからわかるように、そのクラスをインターフェイスに変換し、それを使用して匿名クラスをインスタンス化し、適切なメソッドを呼び出しました。
私の解決策が正しいかどうか誰かに教えてもらえますか? 別の方法でコードを記述しますか? 等号の両側でインターフェイスを使用すると、そのように機能するのはなぜですか?
ありがとう。
ケイトリン