Класс A будет иметь только реализации интерфейса I
Переменная имеет два типа: объявленный (или статический) тип и тип времени выполнения.
I3 ob = new A();
Итак, эта ob
переменная объявлена как тип I3
, а объект, на который она ссылается, имеет тип A. Это даст вам исключение во время компиляции.И прошу вас привести к I3
.Но все равно вы получите исключение времени выполнения 'java.lang.ClassCastException'.
Вы можете назначить ссылку на переменную только ее супертипа .Интерфейс I
- это супер тип класса A
.Интерфейс I3
не является супертипом класса A.
Если бы у вас было
class A implements I3{}
, тогда A
имел бы всю реализацию I
, I2
и I3
.Тогда
I3 ob = new A();
было бы возможно.
Возможности, когда Class A
реализует I3
:
Вы можете использовать ob
для вызова методов интерфейса I
, I2
и I3
.Вы можете проверить, возвращается ли реализация в классе A
.