Прежде чем разобраться с классами и объектами Java, давайте кратко познакомимся с объектно-ориентированным программированием. Программирование — это разработка программ с помощью объектов. Объект представляет собой сущность, и эту сущность можно четко идентифицировать.
Java как объектно-ориентированный язык. Поддерживаются следующие основные концепции:
Полиморфизм
наследовать
инкапсуляция
абстрактный
добрый
объект
Пример
метод
Парсинг сообщений
В этом разделе мы сосредоточимся на понятиях объектов и классов.
Объект : Объект является экземпляром класса и имеет состояние и поведение. Например, собака — это объект. В ее статус входят: цвет, имя и порода; ее поведение включает в себя: виляние хвостом, лай, еду и т. д.
Класс : Класс — это шаблон, описывающий поведение и состояние класса объектов.
Теперь давайте подробнее рассмотрим, что такое объект. Если вы посмотрите на реальный мир вокруг вас, вы обнаружите, что вокруг вас много объектов, таких как машины, собаки, люди и т. д. Все эти объекты имеют свое состояние и поведение.
Возьмем, к примеру, собаку. Ее статус включает в себя: имя, породу и цвет, а ее поведение включает в себя: лай, виляние хвостом и бег.
Если сравнивать реальные объекты и программные объекты, то они очень похожи.
Программные объекты также имеют состояние и поведение. Состояние программного объекта является его атрибутом, а его поведение отражается с помощью методов.
При разработке программного обеспечения методы оперируют изменениями внутреннего состояния объектов, а взаимные вызовы между объектами также осуществляются с помощью методов.
Классы можно рассматривать как шаблоны для создания объектов Java.
Давайте разберемся с определением классов в Java с помощью следующего простого класса:
общественный класс Собака {
Струнная порода;
средний возраст;
Цвет строки;
недействительный лай(){
}
недействительный голод () {
}
пустота сна(){
}
}
Класс может содержать переменные следующих типов:
Локальные переменные . Переменные, определенные в методах, конструкторах или блоках операторов, называются локальными переменными. Объявление и инициализация переменных находятся в методах. После завершения метода переменные будут автоматически уничтожены.
Переменные-члены . Переменные-члены — это переменные, определенные в классе и вне тела метода. Такие переменные создаются при создании объекта. Доступ к переменным-членам можно получить с помощью методов класса, конструкторов и блоков операторов, специфичных для класса.
Переменные класса . Переменные класса также объявляются в классе вне тела метода, но они должны быть объявлены как статические типы.
Класс может иметь несколько методов. В приведенном выше примере: barking()
, hungry()
и sleeping()
— все это методы класса Dog.
Каждый класс имеет методы-конструкторы. Если для класса явно не определен конструктор, компилятор Java предоставит для этого класса конструктор по умолчанию.
При создании объекта должен быть вызван хотя бы один метод конструктора. Имя конструктора должно совпадать с именем класса. Класс может иметь несколько конструкторов.
Вот пример конструктора:
общественный класс Щенок {
publicPuppy(){
}
общественный щенок (строковое имя) {
// Этот конструктор имеет только один параметр: имя
}
}
Объекты создаются на основе классов. В Java используйте ключевое слово new
для создания нового объекта. Для создания объекта необходимо выполнить следующие три шага:
Объявление : Объявите объект, включая имя и тип объекта.
Создание экземпляра : используйте ключевое слово new
для создания объекта.
Инициализация : при использовании new
для создания объекта вызывается метод конструктора для инициализации объекта.
Вот пример создания объекта:
общественный класс Щенок {
общественный щенок (строковое имя) {
//Этот конструктор имеет только один параметр: имя
System.out.println("Имя щенка:" + имя );
}
public static void main(String []args){
//Следующий оператор создаст объект Puppy Puppy myPuppy = new Puppy( "tommy" );
}
}
Скомпилируйте и запустите приведенную выше программу, и будут напечатаны следующие результаты:
Имя щенка: Томми
Доступ к переменным-членам и методам-членам через созданный объект осуществляется следующим образом:
/* Создать экземпляр объекта */
ObjectReference = новый конструктор();
/* Доступ к переменным */
ObjectReference.имяпеременной;
/* Методы доступа в классе */
СсылкаОбъекта.ИмяМетода();
В следующем примере показано, как получить доступ к переменным экземпляра и вызвать методы-члены:
общественный класс Щенок {
int PupAge;
общественный щенок (строковое имя) {
// Этот конструктор имеет только один параметр: имя
System.out.println("Передано имя:" + имя);
}
public void setAge(int age){
щенокВозраст = возраст;
}
общественный int getAge( ){
System.out.println("Возраст щенка:" + PuppyAge );
вернуть возраст щенка;
}
public static void main(String []args){
/* Создать объект */
Щенок myPuppy = новый Щенок("Томми");
/* Устанавливаем возраст с помощью методов */
myPuppy.setAge(2);
/* Вызов другого метода для получения возраста */
myPuppy.getAge( );
/*Вы также можете получить доступ к переменным-членам следующим образом */
System.out.println("Значение переменной:" + myPuppy.puppyAge);
}
}
Компиляция и запуск вышеуказанной программы дает следующие результаты:
Переданное имя: Томми
Возраст щенка: 2.
Значение переменной: 2
В заключительной части этого раздела мы узнаем о правилах объявления исходных файлов. Обратите особое внимание на эти правила при определении нескольких классов в исходном файле, а также при наличии операторов import
и package
.
В исходном файле может быть только один public
класс.
Исходный файл может иметь несколько public
классов.
Имя исходного файла должно соответствовать имени public
класса. Например: имя public
класса в исходном файле — Employee
, тогда исходный файл должен называться Employee.java
.
Если класс определен в пакете, оператор package
должен находиться в первой строке исходного файла.
Если исходный файл содержит оператор import
, его следует поместить между оператором package
и определением класса. Если оператора package
нет, оператор import
должен быть первым в исходном файле.
Оператор import
и оператор package
действительны для всех классов, определенных в исходном файле. В одном и том же исходном файле разные объявления пакетов не могут быть переданы разным классам.
Классы имеют несколько уровней доступа, а также классы делятся на разные типы: абстрактные классы, final
классы и т. д. Они будут представлены в главе «Контроль доступа».
Помимо типов, упомянутых выше, в Java также есть некоторые специальные классы, такие как внутренние классы и анонимные классы.
Пакеты в основном используются для классификации классов и интерфейсов. При разработке программ на Java вы можете писать сотни или тысячи классов, поэтому необходимо классифицировать классы и интерфейсы.
В Java, если указано полное квалифицированное имя, включая имя пакета и имя класса, компилятор Java может легко найти исходный код или класс. Оператор Import
используется для предоставления разумного пути, по которому компилятор может найти определенный класс.
Например, следующая командная строка даст указание компилятору загрузить все классы по пути java_installation/java/io.
импортировать java.io.*;
В этом примере мы создаем два класса: «Сотрудник» и «СотрудникТест».
Сначала откройте текстовый редактор и вставьте в него следующий код. Обратите внимание, что файл сохраняется как «Сотрудник.java».
Класс «Сотрудник» имеет четыре переменных-члена: имя, возраст, должность и зарплата. Класс явно объявляет метод конструктора только с одним параметром.
импортировать java.io.*;
Сотрудник общественного класса {
Строковое имя;
средний возраст;
Обозначение строки;
двойная зарплата;
// Конструктор класса сотрудников public Сотрудники(String name){
это.имя = имя;
}
//Установим значение возраста public void empAge(int empAge){
возраст = empAge;
}
/*Установим значение обозначения*/
общественный недействительный empDesignation (String empDesig) {
обозначение = empDesig;
}
/*Установим значение зарплаты*/
общественная недействительность empSalary (двойной empSalary) {
зарплата = empSalary;
}
/* Печать информации */
общественная недействительность printEmployee () {
System.out.println("Имя:"+ имя);
System.out.println("Возраст:" + возраст);
System.out.println("Обозначение:" + обозначение);
System.out.println("Зарплата:" + зарплата);
}
}
Выполнение программы начинается с main
метода. Чтобы запустить эту программу, необходимо включить main
метод и создать объект экземпляра.
Ниже приведен класс «СотрудникТест», который создает два экземпляра класса «Сотрудник» и вызывает методы для установки значений переменных.
Сохраните следующий код в файле WorkerTest.java.
импортировать java.io.*;
общественный класс СотрудникTest {
public static void main(String args[]){
/* Создать два объекта с помощью конструктора */
Сотрудник empOne = новый сотрудник («Джеймс Смит»);
Сотрудник empTwo = новый сотрудник («Мэри Энн»);
//Вызов методов-членов этих двух объектов empOne.empAge(26);
empOne.empDesignation("Старший инженер-программист");
empOne.empSalary(1000);
empOne.printEmployee();
empTwo.empAge(21);
empTwo.empDesignation("Инженер-программист");
empTwo.empSalary(500);
empTwo.printEmployee();
}
}
Скомпилируйте эти два файла и запустите класс WorkerTest. Вы увидите следующие результаты:
C:>javacEmployee.java
C :> viСотрудникTest.java
C:>javacEmployeeTest.java
C :>javaEmployeeTest
Имя: Джеймс Смит
Возраст:26
Должность: Старший инженер-программист
Заработная плата:1000,0
Имя: Мэри Энн
Возраст:21
Должность: Инженер-программист
Заработная плата:500,0