Работа со своим классом java

Классы в Java примеры для новичков

Классы Java являются одними из основных строительных блоков приложений Java, наборов инструментов, платформ, API и т. д. Небольшое приложение может состоять из одного класса с методом main(). По мере роста программы хранение всего кода в одном классе усложняет его обзор. Поэтому может быть полезно начать разбивать код на несколько классов.

Класс – это единая, согласованная единица кода, которая принадлежит друг другу. Может содержать смесь данных (переменных) и действий (методов). Группировка переменных и операций над этими переменными в классы упрощает структурирование вашей программы, когда она становится слишком большой для одного класса.

Должен храниться в своем собственном файле. Следовательно, с ростом класса файл, который вы редактируете, также увеличивается, и становится все труднее держать его в голове.

Ваше приложение обычно должно содержать хотя бы один класс, но оно может содержать их столько, на сколько считаете целесообразным разделить ваше приложение. Java также поставляется с большим количеством предопределенных классов, так что вам не нужно кодировать каждую маленькую функцию.

Класс может содержать следующие строительные блоки:

  • поля – это переменные (данные), которые являются локальными для класса, или экземпляры (объекты) этого класса;
  • конструкторы – это методы, которые инициализируют экземпляр класса. Часто устанавливают значения полей в данном экземпляре;
  • методы – это операции, которые класс или экземпляры могут выполнять. Например, метод может выполнить операцию над входными параметрами или изменить значение полей, хранящихся внутри объекта и т. д. ;
  • вложенные классы – это классы, которые определены внутри другого класса.

Вложенные виды обычно предназначены для внутреннего использования только в том классе, который их содержит, или для использования в сочетании с классом, который их содержит.

Не все классы имеют поля, конструкторы и методы. Иногда содержат только поля (данные), а иногда – методы (операции). Все зависит от того, что он должен делать.

Определение класса Java

Это определяет общедоступный класс под названием MyClass. Не имеет полей, конструкторов или методов.

Файлы .java

Приведенное выше определение следует поместить в его собственный файл с именем MyClass.java. Файлы должны называться так же, как и имя класса, который они содержат, с расширением .java в качестве расширения имени файла.

Убедитесь, что вы сохраняете одинаковые прописные и строчные буквы из имени класса в имени файла.

Класс с полями

Класс может содержать данные в форме переменных, их обычно называют «полями».

В следующем примере показан класс, предназначенный для моделирования автомобиля. Поэтому назван Car и имеет три поля:

У класса 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 параметра. Второй сохраняет значения этих параметров в полях созданного объекта.

Читайте также:  Select limit sql php

С методами

Класс также может содержать операции, обычно называемые методами. Метод содержит инструкции Java, которые обычно выполняют некоторые операции над полем в классе или над одним из значений параметров (также переменных), передаваемых методу при вызове метода.

Вот пример Car из предыдущего раздела с добавленным методом:

В приведенном выше определении класса добавлен метод setColor(). При вызове этот метод устанавливает внутреннюю переменную цвета (поле) в новое значение.

С вложенным классом

Как упоминалось ранее, вы можете определить вложенный класс внутри другого:

В приведенном выше примере внешний класс называется 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».

Источник

Классы. Объектно-ориентированное программирование

Java является объектно-ориентированным языком, поэтому такие понятия как «класс» и «объект» играют в нем ключевую роль. Любую программу на Java можно представить как набор взаимодействующих между собой объектов.

Шаблоном или описанием объекта является класс , а объект представляет экземпляр этого класса. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке — наличие двух рук, двух ног, головы, туловища и т.д. Есть некоторый шаблон — этот шаблон можно назвать классом. Реально же существующий человек (фактически экземпляр данного класса) является объектом этого класса.

Класс определяется с помощью ключевого слова сlass :

В данном случае класс называется Person. После названия класса идут фигурные скобки, между которыми помещается тело класса — то есть его поля и методы.

Читайте также:  Kotlin volatile что это

Любой объект может обладать двумя основными характеристиками: состояние — некоторые данные, которые хранит объект, и поведение — действия, которые может совершать объект.

Для хранения состояния объекта в классе применяются поля или переменные класса. Для определения поведения объекта в классе применяются методы. Например, класс Person, который представляет человека, мог бы иметь следующее определение:

В классе Person определены два поля: name представляет имя человека, а age — его возраст. И также определен метод displayInfo, который ничего не возвращает и просто выводит эти данные на консоль.

Теперь используем данный класс. Для этого определим следующую программу:

public class Program < public static void main(String[] args) < Person tom; >> class Person < String name; // имя int age; // возраст void displayInfo()< System.out.printf("Name: %s \tAge: %d\n", name, age); >>

Как правило, классы определяются в разных файлах. В данном случае для простоты мы определяем два класса в одном файле. Стоит отметить, что в этом случае только один класс может иметь модификатор public (в данном случае это класс Program), а сам файл кода должен называться по имени этого класса, то есть в данном случае файл должен называться Program.java.

Класс представляет новый тип, поэтому мы можем определять переменные, которые представляют данный тип. Так, здесь в методе main определена переменная tom , которая представляет класс Person. Но пока эта переменная не указывает ни на какой объект и по умолчанию она имеет значение null . По большому счету мы ее пока не можем использовать, поэтому вначале необходимо создать объект класса Person.

Конструкторы

Кроме обычных методов классы могут определять специальные методы, которые называются конструкторами . Конструкторы вызываются при создании нового объекта данного класса. Конструкторы выполняют инициализацию объекта.

Если в классе не определено ни одного конструктора, то для этого класса автоматически создается конструктор без параметров.

Выше определенный класс Person не имеет никаких конструкторов. Поэтому для него автоматически создается конструктор по умолчанию, который мы можем использовать для создания объекта Person. В частности, создадим один объект:

public class Program < public static void main(String[] args) < Person tom = new Person(); // создание объекта tom.displayInfo(); // изменяем имя и возраст tom.name = "Tom"; tom.age = 34; tom.displayInfo(); >> class Person < String name; // имя int age; // возраст void displayInfo()< System.out.printf("Name: %s \tAge: %d\n", name, age); >>

Для создания объекта Person используется выражение new Person() . Оператор new выделяет память для объекта Person. И затем вызывается конструктор по умолчанию, который не принимает никаких параметров. В итоге после выполнения данного выражения в памяти будет выделен участок, где будут храниться все данные объекта Person. А переменная tom получит ссылку на созданный объект.

Если конструктор не инициализирует значения переменных объекта, то они получают значения по умолчанию. Для переменных числовых типов это число 0, а для типа string и классов — это значение null (то есть фактически отсутствие значения).

Читайте также:  Php include html in div

После создания объекта мы можем обратиться к переменным объекта Person через переменную tom и установить или получить их значения, например, tom.name = «Tom» .

В итоге мы увидим на консоли:

Name: null Age: 0 Name: Tom Age: 34

Если необходимо, чтобы при создании объекта производилась какая-то логика, например, чтобы поля класса получали какие-то определенные значения, то можно определить в классе свои конструкторы. Например:

public class Program < public static void main(String[] args) < Person bob = new Person(); // вызов первого конструктора без параметров bob.displayInfo(); Person tom = new Person("Tom"); // вызов второго конструктора с одним параметром tom.displayInfo(); Person sam = new Person("Sam", 25); // вызов третьего конструктора с двумя параметрами sam.displayInfo(); >> class Person < String name; // имя int age; // возраст Person() < name = "Undefined"; age = 18; >Person(String n) < name = n; age = 18; >Person(String n, int a) < name = n; age = a; >void displayInfo() < System.out.printf("Name: %s \tAge: %d\n", name, age); >>

Теперь в классе определено три коструктора, каждый из которых принимает различное количество параметров и устанавливает значения полей класса.

Консольный вывод программы:

Name: Undefined Age: 18 Name: Tom Age: 18 Name: Sam Age: 25

Ключевое слово this

Ключевое слово this представляет ссылку на текущий экземпляр класса. Через это ключевое слово мы можем обращаться к переменным, методам объекта, а также вызывать его конструкторы. Например:

public class Program < public static void main(String[] args) < Person undef = new Person(); undef.displayInfo(); Person tom = new Person("Tom"); tom.displayInfo(); Person sam = new Person("Sam", 25); sam.displayInfo(); >> class Person < String name; // имя int age; // возраст Person() < this("Undefined", 18); >Person(String name) < this(name, 18); >Person(String name, int age) < this.name = name; this.age = age; >void displayInfo() < System.out.printf("Name: %s \tAge: %d\n", name, age); >>

В третьем конструкторе параметры называются так же, как и поля класса. И чтобы разграничить поля и параметры, применяется ключевое слово this:

Так, в данном случае указываем, что значение параметра name присваивается полю name.

Кроме того, у нас три конструктора, которые выполняют идентичные действия: устанавливают поля name и age. Чтобы избежать повторов, с помощью this можно вызвать один из конструкторов класса и передать для его параметров необходимые значения:

В итоге результат программы будет тот же, что и в предыдущем примере.

Инициализаторы

Кроме конструктора начальную инициализацию объекта вполне можно было проводить с помощью инициализатора объекта. Инициализатор выполняется до любого конструктора. То есть в инициализатор мы можем поместить код, общий для всех конструкторов:

public class Program < public static void main(String[] args) < Person undef = new Person(); undef.displayInfo(); Person tom = new Person("Tom"); tom.displayInfo(); >> class Person < String name; // имя int age; // возраст /*начало блока инициализатора*/ < name = "Undefined"; age = 18; >/*конец блока инициализатора*/ Person() < >Person(String name) < this.name = name; >Person(String name, int age) < this.name = name; this.age = age; >void displayInfo() < System.out.printf("Name: %s \tAge: %d\n", name, age); >>
Name: Undefined Age: 18 Name: Tom Age: 18

Источник

Оцените статью