#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
) является ссылкой на это точное поле.