не получается повторить пример из книги г.Шилдт (Java)

книга г.Шилдт по java, стр176. переписываю код из книги, но у меня показывает ошибку. Я так понимаю не видит метод в другом классе? обьясните

import javax.swing.*;

class box {
    double width, heigth, depth;
    double volume() {
        return width*heigth*depth;
    }
    void setDim(double w, double h, double d)   {
        width = w;
        heigth = h;
        depth = d;
    }
}
class  BoxDemo5 {
    public static  void  main(String args[]) {
        Box mybox1 = new Box();
        Box mybox2 = new Box();
        double vol;

        mybox1.setDim(10,20,15);
        mybox2.setDim(3,6,9);

        vol=mybox1.volume();
        System.out.println("Volume = "+vol);
        vol=mybox2.volume();
        System.out.println("Volume = "+vol);
    }
}  

этот пример в книге


Ответы (1 шт):

Автор решения: ulxanxv

Потому что вы класс назвали box, а используете класс Box. Вас не смущает, что у них регистр разный? Этот пример полностью работоспособный. Более того, что вы используете не то название класса, вы ещё и подключили не тот класс — из пакета javax.swing.Box. Ваш класс разве в этом пакете находится?

введите сюда описание изображения

Пакеты создали для того, чтобы отделять одинаковые названия (на самом деле не только из-за этого, но не хочу Вас грузить подробностями). Когда вы хотите использовать какой-то класс, то IDEA подсказывает Вам какие классы с таким именем существуют и указывают пакет в котором они находятся. Как видите, помимо вашего класса (он помечен default package) есть ещё javax.swing.Box, которые к вашему не имеет никакого отношения.

  1. Переименуйте класс
  2. Используйте класс из правильного пакета

P.S. Либо можете не переименовывать и оставить название класса box и в коде измените Box на box. Думается мне аналогов вашему классу с маленькой буквы не существует :) По Java Code Conventions классы ДОЛЖНЫ начинаться с большой буквы

→ Ссылка