Java не может ссылаться на это до вызова конструктора супертипа

#java

#java

Вопрос:

Здравствуйте, когда я запускаю свой код, я получаю ошибку «java: невозможно ссылаться на это до вызова конструктора supertype». Как я могу это исправить?

 public class Premiumhosting extends Hosting{
public int Hosting_fee=0;

public boolean setsignupFeePaid;
public Premiumhosting(String server, String website, String livesupport, String siteDomain, int ram, boolean sethostingFeePaid) {
    super(server, website, livesupport, siteDomain, ram, this.Hosting_fee);
    this.sethostingFeePaid=sethostingFeePaid;
}

public double calculateRam(double purchaseAmount){
    if(sethostingFeePaid){
        return (5*purchaseAmount);

    }
}
 

}

Ответ №1:

this.Hosting_fee еще не инициализировано и не может быть — поэтому оно всегда равно 0. Если бы ваш код работал, замена this.Hosting_fee на 0 сделала бы то же самое. Чего вы пытаетесь достичь? Если это просто «передать 0», то.. просто замените this.Hosting_fee на 0 . Если это не было вашим намерением, возможно, обновите вопрос или задайте новый, мне трудно понять это 🙂

Комментарии:

1. Спасибо вам за ваш комментарий. Существует больше классов, которые имеют разную плату за хостинг, например public int Hosting_fee=5; и т. Д

2. поля не переопределяются, вы просто затеняете их. Они не похожи на методы. В этом коде Hosting_fee не может означать ничего, кроме 0. Не просто «это то, что происходит», но в более фундаментальном смысле — этот code ( this.hosting_fee ) является ссылкой на это точное поле.