Я хотел бы знать, что на самом деле происходит, когда кто-то вызывает метод java super()
в конструкторе класса, наследуемого от абстрактного класса. Как мы знаем, абстрактный класс не может быть создан, но super
вызывает конструктор абстрактного класса.
Давайте возьмем пример.
public abstract class Figure { // cant be instantiated
private type firstAttribute;
private type secondAttribute;
public Figure(type firstAttribute, type secondAttribute) {
this.fisrtAttribute = fisrtAttribute;
this.fisrtAttribute = fisrtAttribute;
}
protected abstract void anyMethod();
}
class Rectangle extends Figure {
public Rectangle(type firstAttribute, type secondAttribute) {
/*
* call the abstract class constructor but we know, a
* constructor is used to
* instantiate class and we can't instantiate an abstract class
*/
super(firstAttribute, secondAttribute);
// then what really happen ?
}
@override
....
}