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

Java — объектно-ориентированный язык. Как язык с объектно-ориентированной функцией Java поддерживает следующие фундаментальные концепции:

  • Полиморфизм
  • Наследование
  • Инкапсуляция
  • Абстракция
  • Классы
  • Объекты
  • Пример
  • Метод
  • Сообщение передается

В этой главе мы рассмотрим концепции — классы и объекты.

  • Объект — объекты имеют состояния и поведение. Пример: у собаки есть состояния — цвет, имя, порода, а также поведение — виляние хвостом, лай, еда. Объект — это экземпляр класса.

  • Класс — класс может быть определен как шаблон / план, который описывает поведение / состояние, поддерживаемое объектом его типа.

Объекты в Java

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

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

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

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

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

Классы на Java

Класс — это план, из которого создаются отдельные объекты.

Ниже приведен образец класса.

пример

public class Dog {
   String breed;
   int age;
   String color;

   void barking() {
   }

   void hungry() {
   }

   void sleeping() {
   }
}

Класс может содержать любой из следующих типов переменных.

  • Локальные переменные — переменные, определенные внутри методов, конструкторов или блоков, называются локальными переменными. Переменная будет объявлена ​​и инициализирована внутри метода, и переменная будет уничтожена, когда метод будет завершен.

  • Переменные экземпляра — переменные экземпляра — это переменные внутри класса, но вне любого метода. Эти переменные инициализируются при создании экземпляра класса. Доступ к переменным экземпляра можно получить из любого метода, конструктора или блоков этого конкретного класса.

  • Переменные класса — переменные класса — это переменные, объявленные внутри класса вне любого метода с помощью ключевого слова static.

У класса может быть любое количество методов для доступа к значениям различных видов методов. В приведенном выше примере методы barking (), hungry () и sleep ().

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

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

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

Каждый раз, когда создается новый объект, будет вызываться как минимум один конструктор. Главное правило конструкторов — они должны иметь то же имя, что и класс. У класса может быть более одного конструктора.

Ниже приведен пример конструктора —

пример

public class Puppy {
   public Puppy() {
   }

   public Puppy(String name) {
      // This constructor has one parameter, name.
   }
}

Java также поддерживает классы Singleton, в которых вы можете создать только один экземпляр класса.

Примечание. У нас есть два разных типа конструкторов. Подробнее о конструкторах мы поговорим в следующих главах.

Создание объекта

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

При создании объекта из класса есть три шага:

  • Объявление — объявление переменной с именем переменной с типом объекта.

  • Создание экземпляра — ключевое слово new используется для создания объекта.

  • Инициализация — за ключевым словом new следует вызов конструктора. Этот вызов инициализирует новый объект.

Ниже приведен пример создания объекта —

пример

public class Puppy {
   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }

   public static void main(String []args) {
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

Если мы скомпилируем и запустим вышеуказанную программу, она выдаст следующий результат:

Вывод

Passed Name is :tommy

Доступ к переменным и методам экземпляра

Доступ к переменным и методам экземпляра осуществляется через созданные объекты. Чтобы получить доступ к переменной экземпляра, следующий полный путь —

/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName();

пример

В этом примере объясняется, как получить доступ к переменным экземпляра и методам класса.

public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Name chosen is :" + name );
   }

   public void setAge( int age ) {
      puppyAge = age;
   }

   public int getAge( ) {
      System.out.println("Puppy's age is :" + puppyAge );
      return puppyAge;
   }

   public static void main(String []args) {
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

Если мы скомпилируем и запустим вышеуказанную программу, она выдаст следующий результат:

Вывод

Name chosen is :tommy
Puppy's age is :2
Variable Value :2

Правила объявления исходного файла

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

  • В исходном файле может быть только один открытый класс.

  • Исходный файл может иметь несколько закрытых классов.

  • Имя открытого класса также должно быть именем исходного файла, к которому в конце должен быть добавлен .java . Например: имя класса — открытый класс Employee {}, тогда исходный файл должен иметь вид Employee.java.

  • Если класс определен внутри пакета, то оператор пакета должен быть первым оператором в исходном файле.

  • Если операторы импорта присутствуют, они должны быть записаны между оператором пакета и объявлением класса. Если нет операторов пакета, то оператор импорта должен быть первой строкой в ​​исходном файле.

  • Операторы импорта и пакета будут относиться ко всем классам, присутствующим в исходном файле. Невозможно объявить разные операторы импорта и / или пакета для разных классов в исходном файле.

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

Помимо вышеупомянутых типов классов, в Java также есть некоторые специальные классы, называемые внутренними классами и анонимными классами.

Пакет Java

Проще говоря, это способ категоризации классов и интерфейсов. При разработке приложений на Java будут написаны сотни классов и интерфейсов, поэтому категоризация этих классов является обязательной и значительно упрощает жизнь.

Заявления об импорте

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

Например, следующая строка попросит компилятор загрузить все классы, доступные в каталоге java_installation / java / io —

import java.io.*;

Простой пример использования

В нашем примере мы создадим два класса. Это Employee и EmployeeTest.

Сначала откройте блокнот и добавьте следующий код. Помните, что это класс Employee, а класс — открытый. Теперь сохраните этот исходный файл с именем Employee.java.

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

пример

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable	salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* Print the Employee details */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

Как упоминалось ранее в этом руководстве, обработка начинается с основного метода. Следовательно, чтобы мы могли запустить этот класс Employee, должен быть главный метод и должны быть созданы объекты. Для этих задач мы создадим отдельный класс.

Ниже приведен класс EmployeeTest , который создает два экземпляра класса Employee и вызывает методы для каждого объекта, чтобы присвоить значения каждой переменной.

Сохраните следующий код в файле EmployeeTest.java.

import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // Invoking methods for each object created
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

Теперь скомпилируйте оба класса, а затем запустите EmployeeTest, чтобы увидеть следующий результат:

Вывод

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

Что следующее?

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

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки