サブクラスがオブジェクトであるかに応じて異なる子メソッドを呼び出すためのJavaで方法はありますか?

orlin614:

私のプロジェクトでは、私はスーパークラスとそれから延びる2つのサブクラスがあります。各サブクラスで別々に上書きされ、スーパークラスのメソッドがあります。私はそれがパラメータとしていずれかのサブクラスのオブジェクトを取得して(属してオブジェクトを実行したサブクラスに依存)のサブクラスの一つでオーバーライドメソッドを呼び出します(別のクラスで)メソッドを導入することが可能かどうかを知りたいです。

public class Superclass{
    public int method(){return 0;}
}
public class Subclass1 extends Superclass{
    public int method(){return 1;}
}
public class Subclass2 extends Superclass{
    public int method(){return 2;}
}
public class CallingClass{
    public static int dependantCall(Superclass parameter){return parameter.method}

私のような何かを行うことができるようにしたいです

Subclass1 subclassObject = new Subclass1;
System.out.println(CallingClass.dependantCall(subclassObject));

出力を得ます

1
プラシャント・パンディー:

はい、それは完全に可能です。ここではその方法は次のようになり方法は次のとおりです。

public <T extends Superclass> void foo(T subclassObject) {
...
} 

または:

public void foo(Superclass obj) {
...
}

上記の方法では、あなたにもサブクラスオブジェクトを渡すこともできます(これらは共変データ型です)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=315662&siteId=1