자바 - 클래스 메서드

안녕하세요, 미래의 자바 프로그래머 여러분! 오늘은 자바 클래스 메서드의 흥미로운 세계에 빠지게 될 것입니다. 프로그래밍에 새로운 사람이라도 걱정하지 마세요 – 저는 여러분을 이 여정을 단계별로 안내해 드리겠습니다. 마치 저가 수년 동안 교육한 수많은 학생들을 안내한 것처럼요. 그럼, 손을 씻고 시작해 보겠습니다!

Java - Class Methods

자바 클래스 메서드란 무엇인가요?

로봇을 만드는 것을 상상해 보세요. 로봇의 몸은 자바의 클래스와 비슷하고, 손을 흔들거나 말하거나 춤을 추는 것과 같은 행동은 메서드와 비슷합니다. 클래스 메서드는 결국 클래스의 객체가 수행할 수 있는 행동이나 동작입니다.

클래스 메서드는 왜 중요한가요?

클래스 메서드는 자바 프로그래밍의 주력 작업자입니다. 그것들은 다음을 허용합니다:

  1. 우리의 코드를 관리할 수 있는 조각으로 구성
  2. 우리가 코드를 반복하지 않고 재사용
  3. 호출될 때마다 특정 작업을 수행

자바 클래스 메서드 생성(선언)

첫 번째 메서드를 생성하여 시작해 보겠습니다. 간단한 예제를 살펴보겠습니다:

public class Robot {
public void wave() {
System.out.println("The robot is waving!");
}
}

이 예제에서, Robot이라는 클래스를 만들고 wave()라는 메서드를 생성했습니다. 이를 분석해 보겠습니다:

  • public: 이는 접근 한정자입니다. 메서드가 클래스 외부에서 접근할 수 있다는 의미입니다.
  • void: 이는 반환형입니다. void는 메서드가 어떤 값도 반환하지 않는다는 의미입니다.
  • wave(): 이는 메서드 이름이고, 괄호가 뒤따릅니다.
  • 중괄호 {} 안의 코드는 메서드 본체입니다.

매개변수와 반환값이 있는 메서드

이제 더 복잡한 메서드를 생성해 보겠습니다:

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

여기서 add()은 다음과 같은 메서드입니다:

  • 두 개의 매개변수(int aint b)를 취합니다.
  • int 값(ab의 합)을 반환합니다.

자바 클래스 메서드 접근

메서드를 사용하려면 먼저 클래스의 객체를 생성해야 합니다(정적 메서드는 예외로, 이후에 설명드리겠습니다). 이렇게 하면 됩니다:

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);
}
}

출력:

The robot is waving!
5 + 3 = 8

우리는 (myRobotmyCalc) 객체를 생성하고, 그들의 메서드를 호출하기 위해 점 표기법을 사용합니다.

자바 클래스 메서드에서의 this 키워드

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("Object is being finalized");
} 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("Deposited: $" + amount);
} else {
System.out.println("Invalid deposit amount");
}
}

public void withdraw(double amount) {
if (amount > 0 && amount <= this.balance) {
this.balance -= amount;
System.out.println("Withdrawn: $" + amount);
} else {
System.out.println("Invalid withdrawal amount or insufficient funds");
}
}

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("John Doe");

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

System.out.println("Current balance: $" + myAccount.getBalance());

double balanceInEuros = BankAccount.convertToCurrency(myAccount.getBalance(), "EUR");
System.out.println("Balance in Euros: €" + balanceInEuros);
}
}

이 예제는 다음을 보여줍니다:

  • 인스턴스 메서드(deposit(), withdraw(), getBalance())
  • 정적 메서드(convertToCurrency())
  • this 키워드의 사용
  • 메서드 매개변수와 반환 값

출력:

Deposited: $1000.0
Withdrawn: $500.0
Current balance: $500.0
Balance in Euros: €425.0

결론

축하합니다! 여러분은 자바 여정에서 큰 발걸음을 내딛었습니다. 클래스 메서드에 대해 배웠습니다. 기억하세요, 연습이 쌓이면 완벽해집니다. 여러분만의 클래스와 메서드를 만들어 보고, 다양한 종류의 메서드를 실험해 보세요. 실수를 할 때까지 두려워마세요 – 그게 우리가 배우는 방법입니다!

저는 수년 동안 교육하면서, 호기심이 많고 끈기 있는 학생들이 잘 나가는 것을 발견했습니다. 그럼, 계속 탐구하고, 코딩하고, 가장 중요한 것은 즐기세요! 자바는 강력한 도구이며, 여러분은 이를 마스터하는 길에 거의 다 왔습니다.

코딩을 즐기세요, 미래의 자바 마스터 여러분!

Credits: Image by storyset