Java — это объектно-ориентированный язык. Как язык, который имеет объектно-ориентированную функцию, Java поддерживает следующие фундаментальные понятия:
- Полиморфизм
- наследование
- Инкапсуляция
- абстракция
- Классы
- Объекты
- Пример
- метод
- Передача сообщений
В этой главе мы рассмотрим понятия — классы и объекты.
-
Объект — объекты имеют состояния и поведение. Пример: у собаки есть состояния — цвет, имя, порода, а также поведение — вилять хвостом, лаять, есть. Объект является экземпляром класса.
-
Класс — класс можно определить как шаблон / план, описывающий поведение / состояние, поддерживаемое объектом его типа.
Объект — объекты имеют состояния и поведение. Пример: у собаки есть состояния — цвет, имя, порода, а также поведение — вилять хвостом, лаять, есть. Объект является экземпляром класса.
Класс — класс можно определить как шаблон / план, описывающий поведение / состояние, поддерживаемое объектом его типа.
Объекты в Java
Давайте теперь посмотрим глубоко на то, что объекты. Если мы рассмотрим реальный мир, мы можем найти много объектов вокруг нас, автомобилей, собак, людей и т. Д. Все эти объекты имеют состояние и поведение.
Если мы рассмотрим собаку, то ее состояние — имя, порода, окрас и поведение — лает, виляет хвостом, бежит.
Если вы сравните программный объект с реальным объектом, они будут иметь очень похожие характеристики.
Программные объекты также имеют состояние и поведение. Состояние программного объекта сохраняется в полях, а поведение отображается с помощью методов.
Таким образом, при разработке программного обеспечения методы работают с внутренним состоянием объекта, а связь между объектами осуществляется с помощью методов.
Классы на Java
Класс — это проект, из которого создаются отдельные объекты.
Ниже приведен образец класса.
пример
public class Dog { String breed; int age; String color; void barking() { } void hungry() { } void sleeping() { } }
Класс может содержать любой из следующих типов переменных.
-
Локальные переменные — переменные, определенные внутри методов, конструкторов или блоков, называются локальными переменными. Переменная будет объявлена и инициализирована в методе, а переменная будет уничтожена после завершения метода.
-
Переменные экземпляра — переменные экземпляра — это переменные внутри класса, но вне какого-либо метода. Эти переменные инициализируются, когда создается экземпляр класса. Переменные экземпляра могут быть доступны из любого метода, конструктора или блоков этого конкретного класса.
-
Переменные класса — переменные класса — это переменные, объявленные внутри класса, вне любого метода, с ключевым словом static.
Локальные переменные — переменные, определенные внутри методов, конструкторов или блоков, называются локальными переменными. Переменная будет объявлена и инициализирована в методе, а переменная будет уничтожена после завершения метода.
Переменные экземпляра — переменные экземпляра — это переменные внутри класса, но вне какого-либо метода. Эти переменные инициализируются, когда создается экземпляр класса. Переменные экземпляра могут быть доступны из любого метода, конструктора или блоков этого конкретного класса.
Переменные класса — переменные класса — это переменные, объявленные внутри класса, вне любого метода, с ключевым словом static.
Класс может иметь любое количество методов для доступа к значению различных видов методов. В приведенном выше примере barking (), hungry () и sleep () являются методами.
Ниже приведены некоторые важные темы, которые необходимо обсудить при изучении классов языка Java.
Конструкторы
При обсуждении классов одним из наиболее важных подтем будут конструкторы. У каждого класса есть конструктор. Если мы явно не пишем конструктор для класса, компилятор Java создает конструктор по умолчанию для этого класса.
Каждый раз, когда создается новый объект, будет вызван как минимум один конструктор. Основное правило конструкторов заключается в том, что они должны иметь то же имя, что и класс. Класс может иметь более одного конструктора.
Ниже приведен пример конструктора —
пример
public class Puppy { public Puppy() { } public Puppy(String name) { // This constructor has one parameter, name . } }
Java также поддерживает Singleton Classes, где вы сможете создать только один экземпляр класса.
Примечание. У нас есть два разных типа конструкторов. Мы собираемся подробно обсудить конструкторы в следующих главах.
Создание объекта
Как упоминалось ранее, класс предоставляет чертежи для объектов. Таким образом, в основном, объект создается из класса. В Java новое ключевое слово используется для создания новых объектов.
Есть три шага при создании объекта из класса —
-
Объявление — объявление переменной с именем переменной с типом объекта.
-
Instantiation — ключевое слово «new» используется для создания объекта.
-
Инициализация — за ключевым словом «new» следует вызов конструктора. Этот вызов инициализирует новый объект.
Объявление — объявление переменной с именем переменной с типом объекта.
Instantiation — ключевое слово «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.
-
Если класс определен внутри пакета, тогда оператор пакета должен быть первым оператором в исходном файле.
-
Если присутствуют операторы импорта, они должны быть записаны между оператором пакета и объявлением класса. Если нет никаких операторов пакета, то оператор импорта должен быть первой строкой в исходном файле.
-
Операторы import и package будут относиться ко всем классам, присутствующим в исходном файле. Невозможно объявить разные операторы импорта и / или пакета для разных классов в исходном файле.
В исходном файле может быть только один открытый класс.
Исходный файл может иметь несколько закрытых классов.
Публичное имя класса также должно быть именем исходного файла, к которому в конце должен быть добавлен .java . Например: имя класса — публичный класс Employee {}, тогда исходный файл должен быть как Employee.java.
Если класс определен внутри пакета, тогда оператор пакета должен быть первым оператором в исходном файле.
Если присутствуют операторы импорта, они должны быть записаны между оператором пакета и объявлением класса. Если нет никаких операторов пакета, то оператор импорта должен быть первой строкой в исходном файле.
Операторы import и package будут относиться ко всем классам, присутствующим в исходном файле. Невозможно объявить разные операторы импорта и / или пакета для разных классов в исходном файле.
У классов есть несколько уровней доступа, и есть разные типы классов; абстрактные классы, финальные классы и т. д. Мы расскажем обо всем этом в главе, посвященной модификаторам доступа.
Помимо вышеупомянутых типов классов, в Java также есть некоторые специальные классы, называемые классами Inner и классами Anonymous.
Пакет 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, должен быть метод main и объекты должны быть созданы. Мы будем создавать отдельный класс для этих задач.
Ниже приведен класс 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.