0

たとえば、サブクラスを使用してスーパークラスの実装を取得する方法を知りたかっただけです。

class Animal {
    void poo() {
        System.out.println("general poo");
    }
}

class Horse extends Animal{
    void poo() {
        System.out.println("horse poo");
    }
}

Animal animal1 = new Horse(); 
// using this I get the implementation of the Horse class's methods
animal1.poo(); //should return horse poo

スーパークラスの実装を取得するためにそれをアップキャストしようとしましたが、役に立ちませんでした

((Animal)animal1).poo() // still returns the horse class's implementation of the method

animal1 オブジェクトを使用してスーパークラスの実装を取得するにはどうすればよいですか?

4

2 に答える 2

7

Java では、新しいメソッドがメソッドへのすべての外部呼び出しを完全に置き換えることを意図していない限り、スーパークラス メソッドをオーバーライドしないでください。

sublcass 実装内では、たとえば super.toString() を使用して、直接のスーパークラス メソッドを参照できます。

于 2012-11-22T00:11:36.560 に答える
1

不可能であることに加えて、意味がありません。クラスを再署名してみてください。

于 2012-11-22T00:13:16.303 に答える