Я новичок и для кого-то вопрос может показаться слишком простым, но я все же решил его задать никак не решив его.
public class Figure {
public String getName() {
return "Figure";
}
}
public class Line extends Figure {
public Line(int a, int b){
...
}
public String getName() {
return "Line";
}
public void move() {
...
}
}
public class Rect extends Figure{
public Rect(int a, int b){
...
}
public String getName() {
return "Rect";
}
public void move() {
...
}
public void setPosition(int a, int b){
...
}
}
public ArrayList<Figure> f = new ArrayList<>();
main(){
f.add(new Line(1,2));
f.add(new Rect(1,2));
System.out.print(f.get(0).getName()) // почему-то печатает "Figure"
Figure f1 = f.get(1);
f1.move(); // этого метода в списке нет
}
Вопрос первый - почему не вызывается метод объекта нужный getName?
Вопрос второй - почему нет в списке методов которых нет в классе Figure?
но если создавать экземпляр класса Line и положить его в переменную типа Line то все работает.
И что нужно почитать для того что бы хранить экземпляры классов различных типов в одной переменной (с типом Object тоже не работает, не видно методов этих экземпляров)?