Классы и объекты в Java

Опубликовано: 15 Февраля, 2022

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

Класс

Класс - это определенный пользователем план или прототип, из которого создаются объекты. Он представляет собой набор свойств или методов, общих для всех объектов одного типа. В общем, объявления классов могут включать эти компоненты в следующем порядке:

  1. Модификаторы : класс может быть общедоступным или иметь доступ по умолчанию (подробности см. Здесь).
  2. Ключевое слово class: ключевое слово class используется для создания класса.
  3. Имя класса: имя должно начинаться с начальной буквы (по соглашению с заглавной буквы).
  4. Суперкласс (если есть): имя родительского класса (суперкласса), если есть, которому предшествует ключевое слово extends. Класс может расширять (создавать подкласс) только одного родителя.
  5. Интерфейсы (если есть): разделенный запятыми список интерфейсов, реализованных классом, если таковые имеются, которому предшествует ключевое слово реализации. Класс может реализовывать более одного интерфейса.
  6. Тело: тело класса, заключенное в фигурные скобки, {}.

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

Объект

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

  1. Состояние : оно представлено атрибутами объекта. Он также отражает свойства объекта.
  2. Поведение : представлено методами объекта. Он также отражает реакцию объекта на другие объекты.
  3. Идентичность : дает уникальное имя объекту и позволяет одному объекту взаимодействовать с другими объектами.

Пример объекта: собака

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

Объявление объектов (также называется созданием экземпляра класса)

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

Пример:

Поскольку мы объявляем такие переменные, как (имя типа;). Это уведомляет компилятор о том, что мы будем использовать имя для ссылки на данные, тип которых является типом. В случае примитивной переменной это объявление также резервирует надлежащий объем памяти для переменной. Таким образом, для ссылочной переменной тип должен быть строго конкретным именем класса. В общем, мы не можем создавать объекты абстрактного класса или интерфейса.

 Собачий туффи;

Если мы объявим ссылочную переменную (tuffy) таким образом, ее значение будет неопределенным (null) до тех пор, пока объект не будет фактически создан и назначен ему. Простое объявление ссылочной переменной не создает объекта.

Инициализация объекта

Оператор new создает экземпляр класса, выделяя память для нового объекта и возвращая ссылку на эту память. Оператор new также вызывает конструктор класса.

Выход:

 Привет, меня зовут туффи.
Моя порода, возраст и окрас папильон, 5, белый
  • Этот класс содержит единственный конструктор. Мы можем распознать конструктор, потому что его объявление использует то же имя, что и класс, и не имеет возвращаемого типа. Компилятор Java различает конструкторы в зависимости от количества и типа аргументов. Конструктор в классе Dog принимает четыре аргумента. Следующее утверждение предоставляет значения для этих аргументов «tuffy», «papillon», 5, «white»:
 Dog tuffy = новый Dog («туффи», «папийон», 5, «белый»);
  • Результат выполнения этого оператора можно проиллюстрировать следующим образом:

Примечание. Все классы имеют хотя бы один конструктор. Если класс не объявляет ничего явно, компилятор Java автоматически предоставляет конструктор без аргументов, также называемый конструктором по умолчанию. Этот конструктор по умолчанию вызывает конструктор без аргументов родительского класса (поскольку он содержит только один оператор, например super ();) или конструктор класса Object, если у класса нет другого родителя (поскольку класс Object является родительским для всех классов, прямо или косвенно ).

Способы создания объекта класса

Есть четыре способа создания объектов в java. Строго говоря, есть только один способ (с использованием ключевого слова new ), а остальные используют внутреннее ключевое слово new.

  • Использование ключевого слова new: это наиболее распространенный и общий способ создания объекта в java. Пример:
 // создаем объект класса Test
Тест t = новый Тест ();
  • Использование метода Class.forName (String className): в пакете java.lang есть предопределенный класс с именем Class. Метод forName (String className) возвращает объект Class, связанный с классом с заданным строковым именем. Мы должны указать полностью определенное имя для класса. При вызове метода new Instance () для этого объекта Class возвращает новый экземпляр класса с заданным строковым именем.
 // создаем объект публичного класса Test
// рассматриваем класс Test, присутствующий в пакете com.p1
Test obj = (Test) Class.forName ("com.p1.Test"). NewInstance ();
  • Использование метода clone (): метод clone () присутствует в классе Object. Он создает и возвращает копию объекта.
        
// создаем объект класса Test
Тест t1 = новый тест ();

// создание клона указанного выше объекта
Тест t2 = (Тест) t1.clone ();
  • Десериализация: десериализация - это метод чтения объекта из сохраненного состояния в файле. Обратитесь к сериализации / десериализации в java
            
FileInputStream файл = новый FileInputStream (имя файла);
ObjectInputStream in = новый ObjectInputStream (файл);
Объект obj = in.readObject ();

Создание нескольких объектов только одного типа (хорошая практика)

  • В реальном времени нам нужны разные объекты класса в разных методах. Создание ряда ссылок для их хранения не является хорошей практикой, поэтому мы объявляем статическую ссылочную переменную и используем ее по мере необходимости. В этом случае потери памяти меньше. Объекты, на которые больше не ссылаются, будут уничтожены сборщиком мусора java. Пример:
          
Тестовый тест = новый Тест ();
test = новый Test ();
  • В системе наследования мы используем ссылочную переменную родительского класса для хранения объекта подкласса. В этом случае мы можем переключаться на разные объекты подкласса, используя одну и ту же ссылочную переменную. Пример:
 class Animal {}

class Dog расширяет Animal {}
class Cat расширяет Animal {}

общедоступный класс Test
{
    // используя объект Dog
    Животное obj = новая собака ();

    // используя объект Cat
    obj = новый Кот ();
}

Анонимные объекты

Анонимные объекты - это объекты, которые создаются, но не хранятся в ссылочной переменной.

  • Они используются для немедленного вызова методов.
  • Они будут уничтожены после вызова метода.
  • Они широко используются в разных библиотеках. Например, в библиотеках AWT они используются для выполнения некоторых действий при захвате события (например, нажатие клавиши).
  • В приведенном ниже примере, когда клавиша является кнопкой (обозначенной btn), мы просто создаем анонимный объект класса EventHandler только для вызова метода дескриптора.
 btn.setOnAction (новый обработчик событий ()
{
    публичный дескриптор void (событие ActionEvent)
    {
        System.out.println («Привет, мир!»);
    }
});

Эта статья предоставлена Gaurav Miglani . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .