Рассмотрим это ниже фрагмент кодаТипичные Иерархическое наследование в Java
public class SuperClass {
public void move()
{
System.out.println("i am in super class");
}
}
public class SubClass1 extends SuperClass{
public void move()
{
System.out.println("i am in sub1 class");
}
}
public class SubClass2 extends SuperClass {
public void move()
{
System.out.println("i am in sub2 class");
}
}
Теперь я создаю объект, как это.
public class program {
public static void main(String[] args) {
SubClass1 obj = new SubClass2(); // Compile error - Type mismatch: cannot convert from SubClass2 to SubClass1
obj.move();
}
}
Почему я не могу так себя вести? Что мешает мне написать это?
Что бы вы ожидали? SubClass1 obj = new SubClass2() 'делать? – Radiodef
@Radiodef Это вопрос, который я недавно встретил. Я знаю, что мы можем сделать SuperClass obj = новый SubClass2(); и вызывать метод move() подкласса2, подобный этому obj.move(); Но не мог ответить, почему я не могу сделать, как SubClass1 obj = new SubClass2() ?? –