В процессе, который вы выполняете, что-то не так. Это не должно быть так сложно. Возможно, вы следуете неправильному руководству или неправильным принципам. Я пользуюсь этой возможностью, чтобы прояснить это раз и навсегда.
Обратите внимание, что пример кода должен быть образцовым. Не нужно писать что-то в спешке, чтобы быстро закончить. По иронии судьбы, вы в конечном итоге тратите больше времени, когда вы это делаете.
Прежде всего, вы должны обратить внимание на имена :: имена классов, методов, полей, переменных и пакетов (потратьте некоторое время на то, что каждый из них означает). Это не какая-то заповедь, а просто удобство. Правила не сложны, на самом деле довольно просто:
- Названия классов, которые вы бы назвали физическими объектами с заглавными (первые буквы с верхним) именем. В конце концов, Java - это язык программирования, который в первую очередь способствует объектно-ориентированному мышлению. После того, как вы выделили сущности, вы назовете их ясно и просто. Примерами могут служить:
Employee
, Student
, Fish
, Square
, City
, State
, Person
и т.д.
- методы Имя, как поведение и переменные как временные вещи. Эти имена должны начинаться с строчной буквы. Примеры имен методов являются
walk
, run
, draw
, read
, write
и т.д. Примеры поля и имен переменных color
, state
, ready
т.д. Переменными, известные как переменных цикла должны быть названы i
, j
, k
и т.д.
Обратите внимание, есть нарушения этих, что вы видите (например, единственный метод в Java, что делает класс исполняемым довольно странно с именем main
, но давайте просто признать, что кажущуюся аномалию без обиды).
Теперь, применив его к вашему случаю, давайте начнем с двух классов Shape
и Painter
. Первая представляет собой форму, которая может быть, например, draw
. Не нужно начинать с пакетов сразу. Я буду использовать синтаксис Unix в следующем примере:
- Открыть редактор. Создайте файл с именем Shape.java и добавьте содержимое.
- В той же папке на вашем компьютере создайте еще один класс под названием Painter.java.
Shape.java
public class Shape {
public void draw() {
System.out.println("Shape#draw");
}
}
Painter.java
public class Painter {
public static void main(String[] args) {
Shape shape = new Shape();
shape.draw();
}
}
Вот так. Компиляция Painter.java и запустить его:
javac
Painter.java
java
Painter
➜ /tmp javac Painter.java
➜ /tmp java Painter
Shape#draw
Введем теперь пакеты. Давайте поместим Painter в пакет с именем actor и Shape in вещь. Проще говоря, пакеты - это папки в файловой системе. Они имеют логическое сочетание функциональности как модуля, блока.
- MkDir вещь актер
- мв Shape.java вещь
- мв Painter.java актер
➜ /tmp cat thing/Shape.java actor/Painter.java
package thing;
class Shape {
public void draw() {
System.out.println("Shape#draw");
}
}
package actor;
import thing.Shape; // need to import Shape from thing package now
class Painter {
public static void main(String[] args) {
Shape shape = new Shape();
shape.draw();
}
}
, что мы добавили package
строки в обоих файлах надлежащим образом Примечание.
- Javac актер/Painter.java - это потому, что мы переместили Painter.java к пакета имени
actor
. Обратите внимание: javac
был достаточно умен, чтобы узнать, где находится Shape.java (теперь он находится в подпапке с именем thing
текущей папки).
- java actor.Painter - поскольку класс теперь находится в пакете с именем
actor
, вы должны сообщить java
, чтобы запустить его так.
`Shape#draw`
Почему так трудно следовать начать с? Конечно, вы должны быстро научиться использовать хорошую среду IDE для Java. Использование IDE является обязательным, если вы должны эффективно выполнять кодирование в Java.
Вам будет полезно ознакомиться с пакетами, баночками и путями классов. –