Классы Java являются одними из основных строительных блоков приложений Java, наборов инструментов, платформ, API и т. д. Небольшое приложение может состоять из одного класса с методом main(). По мере роста программы хранение всего кода в одном классе усложняет его обзор. Поэтому может быть полезно начать разбивать код на несколько классов.
Класс — это единая, согласованная единица кода, которая принадлежит друг другу. Может содержать смесь данных (переменных) и действий (методов). Группировка переменных и операций над этими переменными в классы упрощает структурирование вашей программы, когда она становится слишком большой для одного класса.
Должен храниться в своем собственном файле. Следовательно, с ростом класса файл, который вы редактируете, также увеличивается, и становится все труднее держать его в голове.
Ваше приложение обычно должно содержать хотя бы один класс, но оно может содержать их столько, на сколько считаете целесообразным разделить ваше приложение. Java также поставляется с большим количеством предопределенных классов, так что вам не нужно кодировать каждую маленькую функцию.
Класс может содержать следующие строительные блоки:
- поля — это переменные (данные), которые являются локальными для класса, или экземпляры (объекты) этого класса;
- конструкторы — это методы, которые инициализируют экземпляр класса. Часто устанавливают значения полей в данном экземпляре;
- методы — это операции, которые класс или экземпляры могут выполнять. Например, метод может выполнить операцию над входными параметрами или изменить значение полей, хранящихся внутри объекта и т. д. ;
- вложенные классы — это классы, которые определены внутри другого класса.
Вложенные виды обычно предназначены для внутреннего использования только в том классе, который их содержит, или для использования в сочетании с классом, который их содержит.
Не все классы имеют поля, конструкторы и методы. Иногда содержат только поля (данные), а иногда — методы (операции). Все зависит от того, что он должен делать.
Определение класса Java
Для определения:
public class MyClass {
}
Это определяет общедоступный класс под названием MyClass. Не имеет полей, конструкторов или методов.
Файлы .java
Приведенное выше определение следует поместить в его собственный файл с именем MyClass.java. Файлы должны называться так же, как и имя класса, который они содержат, с расширением .java в качестве расширения имени файла.
Убедитесь, что вы сохраняете одинаковые прописные и строчные буквы из имени класса в имени файла.
Класс с полями
Класс может содержать данные в форме переменных, их обычно называют «полями».
В следующем примере показан класс, предназначенный для моделирования автомобиля. Поэтому назван Car и имеет три поля:
public class Car {
public String brand = null;
public String model = null;
public String color = null;
}
У класса Car нет методов. Только полевые объявления.
С конструктором
Класс может иметь конструктор — это специальный метод, который вызывается при создании объекта. Целью его является инициализация полей. Поля также называются «внутренним состоянием». Вот пример двумя конструкторами:
public class Car {
public String brand = null;
public String model = null;
public String color = null;
public Car() {
}
public Car(String theBrand, String theModel, String theColor) {
this.brand = theBrand;
this.model = theModel;
this.color = theColor;
}
}
Конструкторы — это два метода, имя которых совпадает с именем класса, и для которых не указан тип возвращаемого значения. Первый не принимает параметров, а второй принимает 3 параметра. Второй сохраняет значения этих параметров в полях созданного объекта.
С методами
Класс также может содержать операции, обычно называемые методами. Метод содержит инструкции Java, которые обычно выполняют некоторые операции над полем в классе или над одним из значений параметров (также переменных), передаваемых методу при вызове метода.
Вот пример Car из предыдущего раздела с добавленным методом:
public class Car {
public String brand = null;
public String model = null;
public String color = null;
public void setColor(String newColor) {
this.color = newColor;
}
}
В приведенном выше определении класса добавлен метод setColor(). При вызове этот метод устанавливает внутреннюю переменную цвета (поле) в новое значение.
С вложенным классом
Как упоминалось ранее, вы можете определить вложенный класс внутри другого:
public class MyClass {
public static class MyNestedClass{
}
}
В приведенном выше примере внешний класс называется MyClass, а вложенный — MyNestedClass. Ни один из классов не имеет полей или методов, но как внешний, так и вложенный класс могут иметь столько полей и методов, сколько вы считаете нужным.
Объекты
Класс — это шаблон того, как выглядят объекты этого класса. Другими словами, класс Car в предыдущем разделе — это шаблон того, как выглядят объекты Car.
Для создания объектов определенного класса вы используете ключевое слово new. Вот пример:
Car car1 = new Car();
Car car2 = new Car();
Car car3 = new Car();
car1.setColor("red");
car2.setColor("green");
car3.setColor("blue");
В этом примере создаются 3 переменные Car, и каждой присваивается новый экземпляр класса Car. Каждая из них теперь ссылается на объект Car, но на отдельный объект, также называемый экземпляром. Если вы измените поля одного объекта, поля других объектов не изменятся. Таким образом, поля разных объектов (даже одного и того же класса) могут различаться независимо друг от друга.
После создания 3 объектов Car метод setColor() вызывается для каждого объекта. Теперь цвет (представленный в виде текста) устанавливается индивидуально для каждого объекта Car.
Создание объекта определенного класса также называется «создание экземпляра» объекта. Таким образом, объект также называется «экземпляром» данного класса. Например, каждый из вышеперечисленных объектов Car также называется экземпляром класса Car или просто «экземплярами Car».
