не может ссылаться на дату публикации до того, как был вызван конструктор супертипа

У меня проблемы с этим классом книги, который расширяется от абстрактного класса публикации, который расширяется от класса интерфейса, доступного для публикации. однако, когда я пытаюсь скомпилировать его, появляется сообщение об ошибке «не могу ссылаться на публикацию даты до вызова конструктора супертипа»

Это мой код класса Book:

public abstract class Book extends Publication
{
   /**
    * Set the attributes inherited from the publication class 
    */
   public Book (String publicationDateIn, boolean subscriptionIn, String subscriptionLengthIn, int pageNumbIn,
                String publisherNameIn, String publicationTitleIn, float priceIn, String publicationTypeIn, String issnNumbIn
                , int authorNumbIn)
   {
        super (publicationDate, subscription, pageNumb, publisherName, publicationTitle, price, publicationType, subscriptionLength, authorNumb, issnNumb);
   }
}

person Gavin Lau    schedule 12.01.2014    source источник


Ответы (1)


Я предполагаю, что ваш Publication класс имеет поле publicationDate (и все остальные, которые у вас там есть). Вы не можете ссылаться на это поле в конструкторе подтипа, пока не будет вызван конструктор super.

Вы хотели иметь

super (publicationDateIn, subscriptionIn, pageNumbIn, publisherNameIn, publicationTitleIn, priceIn, publicationTypeIn, subscriptionLengthIn, authorNumbIn, issnNumbIn);

? Другими словами, вы не использовали параметры своего конструктора, вы использовали поля родительского класса.

person Sotirios Delimanolis    schedule 12.01.2014
comment
Я попытался добавить их в конец, но появилось другое сообщение об ошибке: публикация конструктора в публикации класса не может применяться для присвоения типов - person Gavin Lau; 13.01.2014
comment
@ user3188359 А как вы думаете, что это значит? Вы вызываете конструктор. Вы должны передать аргументы, соответствующие этому списку параметров конструктора. - person Sotirios Delimanolis; 13.01.2014