Java - Методы класса

Привет, будущие программисты Java! Сегодня мы погружаемся в увлекательный мир методов классов Java. Не волнуйтесь, если вы новичок в программировании – я веду вас по этому пути шаг за шагом, как это делал со многими студентами на протяжении многих лет своей преподавательской деятельности. Так что, натянем рукава и начнем!

Java - Class Methods

Что такое методы класса Java?

Представьте, что вы создаете робота. Тело робота похоже на класс в Java, а действия, которые он может выполнять – например, махать, говорить или танцевать – похожи на методы. Методы класса являются поведением или действиями, которые могут выполнять объекты класса.

Почему методы класса важны?

Методы класса являются основными рабочими элементами программирования на Java. Они позволяют нам:

  1. Организовать наш код в управляемые куски
  2. Повторно использовать код, избегая повторений
  3. Выполнять конкретные задачи по вызову

Создание (объявление) методов класса Java

Начнем с создания нашего первого метода. Вот простой пример:

public class Robot {
public void wave() {
System.out.println("Робот махает!");
}
}

В этом примере мы создали класс под названием Robot с методом wave(). Разберем это:

  • public: Это модификатор доступа. Он означает, что метод может быть доступен извне класса.
  • void: Это тип возвращаемого значения. void означает, что метод не возвращает никакого значения.
  • wave(): Это имя метода, за которым следуют скобки.
  • Код внутри фигурных скобок {} является телом метода.

Метод с параметрами и возвращаемым значением

Теперь создадим более сложный метод:

public class Calculator {
public int add(int a, int b) {
return a + b;
}
}

Здесь метод add():

  • Принимает два параметра (int a и int b)
  • Возвращает значение типа int (сумму a и b)

Доступ к методам класса Java

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

public class Main {
public static void main(String[] args) {
Robot myRobot = new Robot();
myRobot.wave();

Calculator myCalc = new Calculator();
int result = myCalc.add(5, 3);
System.out.println("5 + 3 = " + result);
}
}

Вывод:

Робот махает!
5 + 3 = 8

Мы создаем объекты (myRobot и myCalc) и затем используем точечную нотацию для вызова их методов.

Ключевое слово this в методах класса Java

Ключевое слово this ссылается на текущий экземпляр объекта. Оно особенно полезно, когда у вас есть параметр с тем же именем, что и переменная экземпляра. Например:

public class Person {
private String name;

public void setName(String name) {
this.name = name;  // 'this.name' ссылается на переменную экземпляра
}
}

Публичные vs. Статические методы класса

Публичные методы

Публичные методы являются методами экземпляра. Они принадлежат объектам класса и могут доступаться к переменным экземпляра. Мы уже видели примеры таких методов.

Статические методы

Статические методы принадлежат самому классу, а не конкретному экземпляру. Они могут быть вызваны без создания объекта. Например:

public class MathHelper {
public static int square(int number) {
return number * number;
}
}

// Использование:
int result = MathHelper.square(4);  // result равен 16

Статические методы не могут доступаться к переменным экземпляра или использовать ключевое слово this.

Метод finalize()

Метод finalize() вызывается сборщиком мусора перед уничтожением объекта. Он используется для операций по очистке. Однако, в общем, не рекомендуется полагаться на finalize() для управления ресурсами.

public class ResourceHeavyObject {
protected void finalize() throws Throwable {
try {
// Код для очистки здесь
System.out.println("Объект будет завершен");
} finally {
super.finalize();
}
}
}

Все вместе

Создадим более сложный пример, который демонстрирует различные аспекты методов класса:

public class BankAccount {
private String accountHolder;
private double balance;

public BankAccount(String accountHolder) {
this.accountHolder = accountHolder;
this.balance = 0.0;
}

public void deposit(double amount) {
if (amount > 0) {
this.balance += amount;
System.out.println("Внесено: $" + amount);
} else {
System.out.println("Неверная сумма внесения");
}
}

public void withdraw(double amount) {
if (amount > 0 && amount <= this.balance) {
this.balance -= amount;
System.out.println("Снято: $" + amount);
} else {
System.out.println("Неверная сумма снятия или недостаточный баланс");
}
}

public double getBalance() {
return this.balance;
}

public static double convertToCurrency(double amount, String currency) {
switch (currency.toLowerCase()) {
case "eur":
return amount * 0.85;
case "gbp":
return amount * 0.74;
default:
return amount;
}
}
}

public class Main {
public static void main(String[] args) {
BankAccount myAccount = new BankAccount("Иван Иванов");

myAccount.deposit(1000);
myAccount.withdraw(500);

System.out.println("Текущий баланс: $" + myAccount.getBalance());

double balanceInEuros = BankAccount.convertToCurrency(myAccount.getBalance(), "EUR");
System.out.println("Баланс в евро: €" + balanceInEuros);
}
}

Этот пример демонстрирует:

  • Методы экземпляра (deposit(), withdraw(), getBalance())
  • Статический метод (convertToCurrency())
  • Использование ключевого слова this
  • Параметры метода и возвращаемые значения

Вывод:

Внесено: $1000.0
Снято: $500.0
Текущий баланс: $500.0
Баланс в евро: €425.0

Заключение

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

В свои годы преподавания я заметил, что студенты, которые преуспевают, – это те, кто любознательен и упорен. Так что продолжайте исследовать, пишите код и, что самое важное, наслаждайтесь этим процессом! Java – это мощное инструмент, и вы уже на пути к его мастерству.

Счастливого кодирования, будущие маэстро Java!

Credits: Image by storyset