Java: объекты, классы и основные концепции ООП
Java — объектно-ориентированный язык. Поддерживает:
- Полиморфизм
- Наследование
- Инкапсуляцию
- Абстракцию
- Классы, объекты, экземпляры, методы, передачу сообщений
Объекты в Java
Реальные объекты (собака, машина) имеют состояние и поведение. Программные объекты — аналогично: состояние в полях, поведение в методах. Методы оперируют внутренним состоянием, взаимодействие — через вызов методов.
Классы в Java
Класс — чертеж для создания объектов.
public class Dog {
String breed; int age; String color;
void barking() { }
void hungry() { }
void sleeping() { }
}
Типы переменных в классе
- Локальные — внутри методов/конструкторов/блоков, живут пока выполняется метод.
- Поля экземпляра — в классе вне методов, инициализируются при создании объекта, доступны во всех методах класса.
- Статические поля (class variables) — с ключевым словом
static, общие для всех экземпляров.
Конструкторы
Инициализируют объект при создании. Имя совпадает с именем класса, нет возвращаемого типа. Если не задан — компилятор создаёт конструктор по умолчанию. Может быть несколько (перегрузка).
public class Puppy {
public Puppy() { }
public Puppy(String name) { /* один параметр */ }
}
Также поддерживаются Singleton-классы (единственный экземпляр).
Создание объекта
Три шага: Объявление (тип и имя), Инстанцирование (new), Инициализация (вызов конструктора).
Puppy myPuppy = new Puppy("tommy");
Доступ к полям и методам
ObjectReference = new Constructor();
ObjectReference.variableName;
ObjectReference.MethodName();
public class Puppy {
int puppyAge;
public Puppy(String name) { System.out.println("Name: " + name); }
public void setAge(int age) { puppyAge = age; }
public int getAge() { System.out.println("Age: " + puppyAge); return puppyAge; }
public static void main(String[] args) {
Puppy myPuppy = new Puppy("tommy");
myPuppy.setAge(2);
myPuppy.getAge();
System.out.println("Variable: " + myPuppy.puppyAge);
}
}
// Output:
// Name: tommy
// Puppy's age is :2
// Variable Value :2
Правила объявления исходного файла
- Один
publicкласс на файл. - Можно несколько не-public классов.
- Имя public-класса = имя файла +
.java. package— первый оператор (если есть).import— после package, до классов.- Package/import действуют на все классы файла.
Пакеты (Packages)
Категоризация классов и интерфейсов. Необходима при большом количестве классов.
Import-операторы
Упрощают доступ к классам: import java.io.*; загружает все классы пакета.
Пример: Employee и EmployeeTest
// Employee.java
import java.io.*;
public class Employee {
String name; int age; String designation; double salary;
public Employee(String name) { this.name = name; }
public void empAge(int empAge) { age = empAge; }
public void empDesignation(String empDesig) { designation = empDesig; }
public void empSalary(double empSalary) { salary = empSalary; }
public void printEmployee() {
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Designation: " + designation);
System.out.println("Salary: " + salary);
}
}
// EmployeeTest.java
import java.io.*;
public class EmployeeTest {
public static void main(String[] args) {
Employee empOne = new Employee("James Smith");
Employee empTwo = new Employee("Mary Anne");
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();
}
}
Результат
Name: James Smith
Age: 26
Designation: Senior Software Engineer
Salary: 1000.0
Name: Mary Anne
Age: 21
Designation: Software Engineer
Salary: 500.0
Далее: примитивные типы данных.
java
- Классы и объекты в C#: Фундаменты надёжного ООП
- Классы и объекты в C++: практическое руководство по объектно-ориентированному программированию
- Дружественные функции и классы в C++: мастерство контроля доступа
- Переменные и литералы в Java: подробное руководство
- Классы и объекты в Java: практическое руководство
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Абстрактные классы и методы в Java: полное руководство
- Вложенные и внутренние классы в Java: типы, примеры и лучшие практики
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры