Java for Beginner
673 subscribers
556 photos
156 videos
12 files
848 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Классы и объекты
Класс — это шаблон для создания объектов. В классе определяются свойства (поля) и поведение (методы) объектов.

Класс объявляется с помощью ключевого слова class:
public class Person {
String name;
int age;

void greet() {
System.out.println("Hello, my name is " + name);
}
}


Здесь Person — это класс, который имеет два поля (name и age) и один метод (greet).

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


Объект создается с помощью ключевого слова new:
Person person1 = new Person();


Это создаст новый объект person1 класса Person.

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

Поля объекта можно инициализировать после его создания:
person1.name = "John";
person1.age = 30;


Вызов методов объекта

Методы объекта вызываются через точку:
person1.greet(); // Выведет "Hello, my name is John"


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

Конструкторы — это специальные методы, которые вызываются при создании объекта для его инициализации. Если в классе не объявлен конструктор, Java автоматически создает конструктор по умолчанию.

Объявление конструктора

Конструкторы имеют то же имя, что и класс, и не возвращают значение (даже void):
public class Person {
String name;
int age;

// Конструктор
public Person(String name, int age) {
this.name = name;
this.age = age;
}

void greet() {
System.out.println("Hello, my name is " + name);
}
}


Создание объекта с использованием конструктора:
public class Main {
public static void main(String[] args) {
Person person1 = new Person("John", 30);
person1.greet(); // Выведет "Hello, my name is John"
}
}


Перегрузка конструкторов

Конструкторы можно перегружать, создавая несколько версий с разными параметрами:
public class Person {
String name;
int age;

// Конструктор по умолчанию
public Person() {
this.name = "Unknown";
this.age = 0;
}

// Конструктор с параметрами
public Person(String name, int age) {
this.name = name;
this.age = age;
}

void greet() {
System.out.println("Hello, my name is " + name);
}
}


Использование перегруженных конструкторов:
public class Main {
public static void main(String[] args) {
Person person1 = new Person();
Person person2 = new Person("Alice", 25);
person1.greet(); // Выведет "Hello, my name is Unknown"
person2.greet(); // Выведет "Hello, my name is Alice"
}
}


Методы в классе

Методы в классе определяют поведение объектов и могут манипулировать их состоянием (полями).

Объявление метода

Метод объявляется с указанием возвращаемого типа, имени и параметров (если есть):
public class Person {
String name;
int age;

void greet() {
System.out.println("Hello, my name is " + name);
}

// Метод с параметрами
void setAge(int newAge) {
age = newAge;
}

// Метод с возвращаемым значением
int getAge() {
return age;
}
}


Вызов методов объекта

Методы вызываются через точку, указывая объект, имя метода и параметры (если есть):
public class Main {
public static void main(String[] args) {
Person person = new Person("John", 30);
person.greet(); // Выведет "Hello, my name is John"
person.setAge(35);
System.out.println("Age: " + person.getAge()); // Выведет "Age: 35"
}
}


Примеры классов и объектов

Класс Car:
public class Car {
String model;
int year;

public Car(String model, int year) {
this.model = model;
this.year = year;
}

void displayInfo() {
System.out.println("Model: " + model + ", Year: " + year);
}
}


public class Main {
public static void main(String[] args) {
Car car1 = new Car("Toyota", 2020);
Car car2 = new Car("Honda", 2018);
car1.displayInfo(); // Выведет "Model: Toyota, Year: 2020"
car2.displayInfo(); // Выведет "Model: Honda, Year: 2018"
}
}


#Java #Training #Class #Method #ООП
Поля и методы класса. Конструкторы

Поля класса — это переменные, которые определяют состояние объекта. Они объявляются внутри класса, но вне любых методов или конструкторов. Поля могут быть различных типов: примитивными (например, int, double) или ссылочными (например, String, объекты других классов).

Объявление и инициализация полей

Поля класса можно объявить и инициализировать следующим образом:
public class Person {
String name; // Поле класса
int age; // Поле класса

// Инициализация полей может быть выполнена в конструкторе
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}


Инициализация полей также может происходить при их объявлении:
public class Person {
String name = "Unknown";
int age = 0;
}


Модификаторы доступа

Поля класса могут иметь разные модификаторы доступа:

public: Поле доступно из любого класса.
private: Поле доступно только внутри самого класса.
protected: Поле доступно внутри пакета и подклассов.
default (без модификатора): Поле доступно только внутри пакета.


Пример:
public class Person {
private String name;
private int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}


Константы (final поля)

Константы — это поля, значения которых не могут изменяться после инициализации. Они объявляются с ключевым словом final:
public class Circle {
public static final double PI = 3.14159;

double radius;

public Circle(double radius) {
this.radius = radius;
}

public double calculateArea() {
return PI * radius * radius;
}
}


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

Создадим класс Car с полями make, model и year, а также методами для доступа к этим полям:
public class Main {
public static void main(String[] args) {
Car car = new Car("Toyota", "Corolla", 2020);
System.out.println("Make: " + car.getMake());
System.out.println("Model: " + car.getModel());
System.out.println("Year: " + car.getYear());

car.setYear(2021);
System.out.println("Updated Year: " + car.getYear());
}
}


#Java #Training #Class
Базовые понятия и практическое применение Reflection API

Класс Class<T>: что это такое и зачем он нужен

Класс Class<T> — это основа Reflection API. Он представляет собой метаинформацию о классе или интерфейсе.

Каждый класс в Java имеет соответствующий объект Class, который можно использовать для:
Получения информации о классе (поля, методы, конструкторы).
Создания экземпляров класса.
Вызова методов и доступа к полям.


Как получить объект Class

Через .class:
Class<String> stringClass = String.class;
Этот способ работает для любого типа, включая примитивы и массивы.


Через метод getClass():
String str = "Hello";
Class<?> stringClass = str.getClass();
Этот метод доступен для всех объектов и возвращает класс их экземпляра.


Через Class.forName():
Class<?> stringClass = Class.forName("java.lang.String");
Этот метод полезен, когда имя класса известно только во время выполнения.


Практическое применение: примеры получения объекта Class

Для примитивов:
Class<?> intClass = int.class;
System.out.println(intClass.getName()); // Вывод: int


Для классов:
Class<?> stringClass = String.class;
System.out.println(stringClass.getName()); // Вывод: java.lang.String


Для массивов:
Class<?> arrayClass = int[].class;
System.out.println(arrayClass.getName());


Для анонимных классов:
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Running");
}
};
Class<?> anonymousClass = runnable.getClass();
System.out.println(anonymousClass.getName()); // Вывод: com.example.Main$1


#Java #Training #Medium #Reflection_API #Class
Класс Class и его методы.

Класс Class в Java является частью Reflection API и представляет собой метаинформацию о классах и интерфейсах. Каждый объект в Java имеет ассоциированный объект Class, который можно использовать для получения информации о классе, его методах, полях, конструкторах и аннотациях.

Получение объекта Class

Объект Class можно получить несколькими способами:
Через объект: obj.getClass()
Через имя класса:
Class.forName("полное.имя.класса")
Через литерал класса: ClassName.
class

Пример:
String str = "Hello";
Class<?> strClass = str.getClass(); // Получаем Class для объекта String
Class<?> intClass = int.class; // Получаем Class для примитива int
Class<?> arrClass = String[].class; // Получаем Class для массива String[]


Методы для получения информации о классе

getName()
Возвращает полное имя класса, включая пакет.

Пример:
Class<?> strClass = String.class;
System.out.println(strClass.getName()); // Вывод: java.lang.String


getSimpleName()
Возвращает простое имя класса (без пакета).

Пример:
System.out.println(strClass.getSimpleName()); // Вывод: String


getPackage()
Возвращает объект Package, представляющий пакет, в котором находится класс.

Пример:
Package pkg = strClass.getPackage();
System.out.println(pkg.getName()); // Вывод: java.lang


getModifiers()
Возвращает модификаторы класса в виде целого числа. Для расшифровки используется класс Modifier.

Пример:
int modifiers = strClass.getModifiers();
System.out.println(Modifier.isPublic(modifiers)); // Вывод: true
System.out.println(Modifier.isFinal(modifiers)); // Вывод: true


Пример получения информации о классе
public class Main {
public static void main(String[] args) {
Class<?> clazz = String.class;
System.out.println("Class Name: " + clazz.getName());
System.out.println("Simple Name: " + clazz.getSimpleName());
System.out.println("Package: " + clazz.getPackage().getName());
System.out.println("Is Public: " + Modifier.isPublic(clazz.getModifiers()));
}
}


#Java #Training #Medium #Reflection_API #Class
Класс Class и его методы. Часть 2

Получение информации о суперклассе и интерфейсах

getSuperclass()
Возвращает Class объекта, представляющего суперкласс текущего класса. Если класс не имеет суперкласса (например, Object), возвращается null.

Пример:
Class<?> arrayListClass = ArrayList.class;
Class<?> superClass = arrayListClass.getSuperclass();
System.out.println(superClass.getName()); // Вывод: java.util.AbstractList


getInterfaces()
Возвращает массив Class объектов, представляющих интерфейсы, реализованные классом.

Пример:
Class<?>[] interfaces = arrayListClass.getInterfaces();
for (Class<?> iface : interfaces) {
System.out.println(iface.getName()); // Вывод: java.util.List, java.util.RandomAccess и т.д.
}


Работа с аннотациями

getAnnotations()
Возвращает массив всех аннотаций, присутствующих на классе, включая унаследованные.

Пример:
@Deprecated
class MyClass {}

Class<?> myClass = MyClass.class;
Annotation[] annotations = myClass.getAnnotations();
for (Annotation ann : annotations) {
System.out.println(ann.annotationType().getName()); // Вывод: java.lang.Deprecated
}


getDeclaredAnnotations()

Возвращает массив всех аннотаций, непосредственно объявленных на классе (без унаследованных).

Пример:
Annotation[] declaredAnnotations = myClass.getDeclaredAnnotations();
for (Annotation ann : declaredAnnotations) {
System.out.println(ann.annotationType().getName()); // Вывод: java.lang.Deprecated
}


Пример получения информации о суперклассе и аннотациях
public class Main {
public static void main(String[] args) {
Class<?> clazz = ArrayList.class;

// Суперкласс
Class<?> superClass = clazz.getSuperclass();
System.out.println("Superclass: " + superClass.getName());

// Интерфейсы
Class<?>[] interfaces = clazz.getInterfaces();
for (Class<?> iface : interfaces) {
System.out.println("Interface: " + iface.getName());
}

// Аннотации
Annotation[] annotations = clazz.getAnnotations();
for (Annotation ann : annotations) {
System.out.println("Annotation: " + ann.annotationType().getName());
}
}
}


#Java #Training #Medium #Reflection_API #Class