Я новичок в java и при попытке ответить на вопрос what is the output
.Почему этот интерфейсный экземпляр дает ошибку при ссылке на экземпляр класса, который реализует этот интерфейс.
Эта строка InterfaceB obj = new ClassA();
дает ошибку, а другие нет.
Я знаю, что переменная суперкласса может ссылаться на переменную подкласса, аналогичную интерфейсу. Но что происходит в этом случае. Я хочу знать, что происходит за увиденным.
interface InterfaceA { void methodA(); }
interface InterfaceB extends InterfaceA { void methodB(); }
class ClassA implements InterfaceA
{
public void methodA() {}
public void methodB() {}
}
class ClassB extends ClassA implements InterfaceB
{
public ClassB() {}
// InterfaceA obj = new ClassA(); no error
InterfaceB obj = new ClassA(); //give error: incompatible types
// InterfaceA obj = new ClassB(); no error
// InterfaceB obj = new ClassB(); no error
// ClassA obj = new ClassB(); no error
}
public class Online4 {
public static void main(String args[]) {
ClassB b = new ClassB();
}
}
Я пропустил, что InterfaceA является родителем в иерархии, а InteraceB и ClassA похожи на братьев и сестер. – netsmertia