パラメータをオブジェクトとしてメソッドに設定できるかどうか疑問に思いました。オブジェクトは、あるクラスを拡張し、別のクラスを実装する必要があります。次に例を示します。ClassAというクラスとMyInterfaceというインターフェイスがあるとします。
public class ClassA {
/* code */
}
public interface MyInterface {
/* code */
}
ClassAを拡張し、MyInterfaceを実装するClassBというクラスがどこかにあるとしましょう。
public class ClassB extends ClassA implements MyInterface {
/* code */
}
ClassAを拡張し、MyInterfaceを実装するClassCを使用することもできます。
public class ClassC extends ClassA implements MyInterface {
/* code */
}
私の質問はこれです:
method1というメソッドがあり、method1にObjectを受け入れるパラメーターが必要だとします。このオブジェクトをClassAのサブクラスにするか、実際にはClassA自体にする必要があるとします。これは簡単です。
public void method1(ClassA parameter) {
}
たとえば、method2も必要であり、method2には、MyInterfaceを実装するものをすべて受け入れるパラメーターが必要だとします。繰り返しますが、これは簡単です。
public void method2(MyInterface parameter) {
}
しかし、method3が必要で、ClassAのサブクラスまたはClassA自体であるオブジェクトのみを受け入れ、MyInterfaceを実装するパラメーターが必要で、ClassBとClassCの両方を受け入れるが、ClassAのみを拡張するクラスは受け入れない場合はどうなりますか?またはMyInterfaceのみを実装するか、どちらも実装しません。好き:
public void method3 ([Something that extends ClassA implements MyInterface] parameter) {
/* code */
}