неявный конструктор PropertyDB()
существует только в том случае, если вы не определяете какие-либо другие конструкторы, и в этом случае вам придется явно определить PropertyDB()
конструктор.
причина появления этой ошибки "Неявный супер-конструктор PropertyDB() не определено. Должен явно вызывать другой конструктор. "в том, что в вашем конструкторе public FarmedLand(int newHectares, int newListPrice, String newCorn)
, super()
автоматически вызывается как первый оператор, который не существует в вашем суперклассе.
Вот упрощенный пример:
public class A { }
может бытьсоздается с использованием A a = new A()
, потому что public A() { }
является неявным конструктором класса A.
public class A {
public A(int z) { /* do nothing*/ }
}
может не быть создан с использованием A a = new A()
, поскольку путем определения явного конструктора public A(int z)
неявный больше не доступен.
Переход к конструкторам и наследованию, из Раздел спецификации языка Java 8.8.7 :
Если тело конструктора не имеетначинаются с явного вызова конструктора, и объявленный конструктор не является частью первичного класса Object, затем компилятор неявно предполагает, что тело конструктора начинается с вызова конструктора суперкласса "super ();", вызова конструктораэто прямой суперкласс, который не принимает аргументов.
Так что в вашем случае выполняется первое выражениеКонструктор public FarmedLand(int newHectares, int newListPrice, String newCorn)
является неявным вызовом super();
, который в вашем случае не определен неявно (уже определен конструктор public PropertyDB(int, String, ...)
) или явно (его нет в исходном коде)