Given to interfaces I1 and I2
interface I1{int i=1; void foo();}
interface I2{int i=2; int foo();}
is there any way for a class A to implements both of them? I can't manage to correctly implement the foo methods, and this makes sense, because having the same input parameters in I1.foo() and I2.foo() wouldn't let class A distinguish between the two.
But the constant "i" is not a problem, provided that you cast A to one of the interfaces when trying to read them:
System.out.println(((I2)new A()).i);
it looks like the compiler says: "Ok i'm leaving you with an ambiguity in 'potentiality', but when it comes to 'actuality' i'm going to stop you". And the "actuality" for the methods seems to come earlier.
Am I right? Am I missing something? Am i just going crazy imagining a compiler talking to me like an aristotelian?
No. You can think of interfaces in Java as contracts. Because these interfaces have the same method name (but different return types) no one class can fulfil both contracts. If they had different arguments the answer would be yes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With