Java не может найти символ: ошибка конструктора - PullRequest
0 голосов
/ 13 августа 2011

Я пишу класс (Suite), который наследуется от другого класса (HotelRoom).Класс HotelRoom имеет конструктор, который требует аргумент (int), и поэтому в конструкторе для Suite я назвал super (room), который, как я могу сказать, должен работать.HotelRoom соответствует просто отлично, однако Suite выдает ошибку конструктора.Любая помощь будет принята с благодарностью.Вот мой код ниже:

public class HotelRoom
{
    private int roomNumber;
    protected double nightlyRate;
    private final int maxRoomNumber = 999;
    boolean didEnterCorrectRoomNumber = false;

    public HotelRoom(int room)
    {

        if (room > 0 && room <= 299)
        {
            nightlyRate = 69.95;
            didEnterCorrectRoomNumber = true;
            //return didEnterCorrectRoomNumber;
        }
        else if (room > 299 && room <= maxRoomNumber)
        {
            nightlyRate = 89.95;
            didEnterCorrectRoomNumber = true;
            //return didEnterCorrectRoomNumber;
        }
        else
        {
            //return didEnterCorrectRoomNumber;
        }
    }

    public int getRoomNumber ()
    {
        return roomNumber;
    }

    public double getNightlyRate ()
    {
        return nightlyRate;
    }
    public boolean getDidEnterCorrectRoomNumber ()
    {
        return didEnterCorrectRoomNumber;
    }

    public void displayRoom ()
    {
        System.out.println("Room Number: " + roomNumber);
        System.out.format("Cost per Night: $%.2f%n", nightlyRate);
    }

}

и мой подкласс:

public class Suite extends HotelRoom
{
    private final double suiteSurchargeRate = 40.00;
    private double nightlyRateWithSuite;

    public Suite (int room)
    {
        super(room);
        //boolean didEnterCorrectRoomNumber = super.getDidEnterCorrectRoomNumber();
        nightlyRateWithSuite = super.getNightlyRate() + suiteSurchargeRate;
        //return didEnterCorrectRoomNumber;
    }

    public void displayRoom ()
    {
        super.displayRoom();
        System.out.format("Suite Surcharge: $%.2f%n", suiteSurchargeRate);
        System.out.format("Total Cost per Night: $%.2f%n", nightlyRateWithSuite);
    }

}

Точная ошибка компилятора:

MacBook-Air:HotelRoom Nick$ javac Suite.java
Suite.java:12: cannot find symbol
symbol  : constructor HotelRoom(int)
location: class HotelRoom
    super(room);
    ^
1 error

Я несколько раз сохранял и перекомпилировали я просто получаю тот же результат.HotelRoom компилируется нормально, а Suite - нет.Это только два java-файла в их каталоге, поэтому нет проблем с вызовом неправильного класса.:)

1 Ответ

0 голосов
/ 13 августа 2011

Я думаю, это относится к вашей настройке Java на вашем Mac.Используя Java 1.6 на ПК под управлением Linux, он компилируется и работает нормально для меня, протестировано со следующим классом

public class Main {
    public static void main(String[] args) {        
        Suite suite = new Suite(10);
        suite.displayRoom();    
    }
}

Вывод:

Room Number: 0
Cost per Night: $69.95
Suite Surcharge: $40.00
Total Cost per Night: $109.95
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...